more lost dotdot caching pessimizes nfs especially

Bruce Evans bde at zeta.org.au
Tue Jan 23 13:18:41 UTC 2007


I suspect that recent locking fixes near dotdot are responsible for
slowing down builds over nfs even further by increasing the number
of RPCs.  Times and RPC counts for building a RELENG_4 kernel under
-current on a Turion X2 2GHz:

With i386 SMP kernel built a few days ago:
%%%
make depend:
         9.31 real         5.04 user         1.25 sys
  Lookup Read Write Access Getattr Other   Total
    1269  541   591  20633     447   112   23593

make:
        67.28 real        55.55 user         3.86 sys
  Lookup Read Write Create Access Fsstat Other   Total
    4633 2370  5291    436  22269   1726    14   36739
%%%

With i386 SMP kernel built an hour ago:
%%%
make depend:
        13.70 real         5.38 user         1.56 sys
  Lookup Read Write Access Getattr Other   Total
   14008  541   591  38615     447    96   54298

make:
        71.49 real        55.21 user         4.45 sys
  Lookup Read Write Create Access Fsstat Other   Total
   19237 2370  5292    436  41860   1714    14   70923
%%%

Note that only the number of Lookups and Access's changed significantly
(Access goes with Lookup).

This is without -j4 so that the slowdown is more obvious.  "make depend"
is not parallelized, so -j4 has little effect for it, but -j4 now
speeds "make" up by even more than a factor of 2 by running more RPCs
in parallel.  The speedup used to be only from 67.3 to 34.3 seconds,
but now it is from 71.5 to 34.8 seconds.

This is with my old fixes and hacks to reduce RPCs, and the network
tuned for latency (80 usec ping -f latency).  Plain -current would use
about 120000 RPCs for "make" and thus take 10-20 seconds longer.  It
would use a bit less than that for "make depend" and thus take 5-10
seconds longer.  "make depend" would take about twice as long as it
should.  It can easily take much longer than that on machines with
larger network latency.

Bruce


More information about the freebsd-fs mailing list