linux/fs/nfsd
Greg Banks 8bbfa9f388 knfsd: remove the nfsd thread busy histogram
Stop gathering the data that feeds the 'th' line in /proc/net/rpc/nfsd
because the questionable data provided is not worth the scalability
impact of calculating it.  Instead, always report zeroes.  The current
approach suffers from three major issues:

1. update_thread_usage() increments buckets by call service
   time or call arrival time...in jiffies.  On lightly loaded
   machines, call service times are usually < 1 jiffy; on
   heavily loaded machines call arrival times will be << 1 jiffy.
   So a large portion of the updates to the buckets are rounded
   down to zero, and the histogram is undercounting.

2. As seen previously on the nfs mailing list, the format in which
   the histogram is presented is cryptic, difficult to explain,
   and difficult to use.

3. Updating the histogram requires taking a global spinlock and
   dirtying the global variables nfsd_last_call, nfsd_busy, and
   nfsdstats *twice* on every RPC call, which is a significant
   scaling limitation.

Testing on a 4 CPU 4 NIC Altix using 4 IRIX clients each doing
1K streaming reads at full line rate, shows the stats update code
(inlined into nfsd()) takes about 1.7% of each CPU.  This patch drops
the contribution from nfsd() into the profile noise.

This patch is a forward-ported version of knfsd-remove-nfsd-threadstats
which has been shipping in the SGI "Enhanced NFS" product since 2006.
In that time, exactly one customer has noticed that the threadstats
were missing.  It has been previously posted:

http://article.gmane.org/gmane.linux.nfs/10376

and more recently requested to be posted again.

Signed-off-by: Greg Banks <gnb@sgi.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
2009-03-18 17:38:41 -04:00
..
Kconfig nfsd : Define NFSD only when FILE_LOCKING is enabled 2009-03-18 17:30:48 -04:00
Makefile
auth.c nfsd: fix cred leak on every rpc 2009-01-27 17:26:59 -05:00
auth.h
export.c
lockd.c
nfs2acl.c
nfs3acl.c
nfs3proc.c Short write in nfsd becomes a full write to the client 2009-03-18 17:38:40 -04:00
nfs3xdr.c
nfs4acl.c
nfs4callback.c nfsd4: move rpc_client setup to a separate function 2009-03-18 17:38:39 -04:00
nfs4idmap.c
nfs4proc.c nfsd4: remove redundant check from nfsd4_open 2009-03-18 17:38:41 -04:00
nfs4recover.c nfsd4: don't do lookup within readdir in recovery code 2009-03-18 17:38:40 -04:00
nfs4state.c nfsd4: remove use of mutex for file_hashtable 2009-03-18 17:38:38 -04:00
nfs4xdr.c nfsd4: support putpubfh operation 2009-03-18 17:38:40 -04:00
nfscache.c
nfsctl.c NFSD: Add documenting comments for nfsctl interface 2009-01-06 11:53:57 -05:00
nfsfh.c NFSD: FIDs need to take precedence over UUIDs 2009-01-07 17:23:07 -05:00
nfsproc.c Short write in nfsd becomes a full write to the client 2009-03-18 17:38:40 -04:00
nfssvc.c knfsd: remove the nfsd thread busy histogram 2009-03-18 17:38:41 -04:00
nfsxdr.c
stats.c
vfs.c Short write in nfsd becomes a full write to the client 2009-03-18 17:38:40 -04:00