Coda File System

avoiding fragmentation

From: Greg Troxel <gdt_at_ir.bbn.com>
Date: Sat, 22 Sep 2001 10:48:25 -0400
  [I dislike fragmentation, perhaps to the point of being irrational
  about it.  I complained to Jan about this on ValidateAttrs rpc2
  calls (I was getting 3 fragments on these), and he suggested
  changing PIGGY_VALIDATIONS in venus/fso.h and explained that this
  controls how many extra fid/vv pairs are sent in the ValidateAttrs
  rpc.]

I experimented a bit and found a value that still packs the packet
pretty full but avoids fragmentation.  I am staying away from the
hairy edge since I use ESP, and sometimes IP-IP tunnels, and in
general I believe some number of such overheads (3?) should be planned
for.

With PIGGY_VALIDATIONS=21, I get 1452 byte packets (with ESP).  'hoard
walk' perhaps took longer that before, but it proceeded in a very
orderly manner with a new ValidateAttrs request every RTT and no
fragmentation.  (IMHO, the painful part of hoard walk on a modem is
actually fetching the big files, which kills interactive performance
until they are fetched - the delay for validation doesn't bother me,
as I'd prefer this to be a low-rate background process anway.)

Thanks for the tip; this would have taken me much longer to find
myself.

Here's a patch:

Index: fso.h
===================================================================
RCS file: /coda-src/coda/coda-src/venus/fso.h,v
retrieving revision 4.52
diff -u -u -r4.52 fso.h
--- fso.h	2001/08/23 20:25:49	4.52
+++ fso.h	2001/09/22 14:24:44
@@ -93,7 +93,9 @@
 const int BLOCKS_PER_FILE = 24;			    /* rule of thumb */
 const int MIN_CF = MIN_CB / BLOCKS_PER_FILE;
 
-const int PIGGY_VALIDATIONS = 50;  /* number of objects we can validate on the side */
+/* Avoid fragmentation (56 bytes per validation)
+ * With IP/ESP/UDP/CODA, 15 results in 1116, and 21 in 1452 */
+const int PIGGY_VALIDATIONS = 21;  /* number of objects we can validate on the side */
 
 /* Priorities. */
 const int FSO_MAX_SPRI = H_MAX_PRI;
Received on 2001-09-22 10:49:49