1
linux/fs/nfsd
Greg Banks fce1456a19 [PATCH] knfsd: make nfsd readahead params cache SMP-friendly
Make the nfsd read-ahead params cache more SMP-friendly by changing the single
global list and lock into a fixed 16-bucket hashtable with per-bucket locks.
This reduces spinlock contention in nfsd_read() on read-heavy workloads on
multiprocessor servers.

Testing was on a 4 CPU 4 NIC Altix using 4 IRIX clients each doing 1K
streaming reads at full line rate.  The server had 128 nfsd threads, which
sizes the RA cache at 256 entries, of which only a handful were used.  Flat
profiling shows nfsd_read(), including the inlined nfsd_get_raparms(), taking
10.4% of each CPU.  This patch drops the contribution from nfsd() to 1.71% for
each CPU.

Signed-off-by: Greg Banks <gnb@melbourne.sgi.com>
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-10-04 07:55:16 -07:00
..
auth.c [PATCH] knfsd: nfsd: nfsd_setuser doesn't really need to modify rqstp->rq_cred. 2006-04-11 06:18:52 -07:00
export.c [PATCH] nfsd: add lock annotations to e_start and e_stop 2006-10-02 07:57:18 -07:00
lockd.c
Makefile [PATCH] knfsd: nfsd4: reboot hash 2005-06-24 00:06:33 -07:00
nfs2acl.c [PATCH] knfsd: Replace two page lists in struct svc_rqst with one 2006-10-04 07:55:15 -07:00
nfs3acl.c [PATCH] knfsd: Replace two page lists in struct svc_rqst with one 2006-10-04 07:55:15 -07:00
nfs3proc.c [PATCH] knfsd: Prepare knfsd for support of rsize/wsize of up to 1MB, over TCP 2006-10-04 07:55:16 -07:00
nfs3xdr.c [PATCH] knfsd: Prepare knfsd for support of rsize/wsize of up to 1MB, over TCP 2006-10-04 07:55:16 -07:00
nfs4acl.c [PATCH] knfsd: nfsd4: better nfs4acl errors 2006-04-11 06:18:51 -07:00
nfs4callback.c [PATCH] knfsd: add some missing newlines in printks 2006-10-02 07:57:17 -07:00
nfs4idmap.c [PATCH] fs: Conversions from kmalloc+memset to k(z|c)alloc 2006-09-27 08:26:10 -07:00
nfs4proc.c [PATCH] knfsd: Avoid excess stack usage in svc_tcp_recvfrom 2006-10-04 07:55:15 -07:00
nfs4recover.c [PATCH] VFS: Make filldir_t and struct kstat deal in 64-bit inode numbers 2006-10-03 08:03:40 -07:00
nfs4state.c [PATCH] Really ignore kmem_cache_destroy return value 2006-09-27 08:26:10 -07:00
nfs4xdr.c [PATCH] knfsd: Prepare knfsd for support of rsize/wsize of up to 1MB, over TCP 2006-10-04 07:55:16 -07:00
nfscache.c [PATCH] fs: use list_move() 2006-06-26 09:58:18 -07:00
nfsctl.c [PATCH] knfsd: Allow max size of NFSd payload to be configured 2006-10-04 07:55:16 -07:00
nfsfh.c [PATCH] knfsd: Fix stale file handle problem with subtree_checking. 2006-07-31 13:28:37 -07:00
nfsproc.c [PATCH] knfsd: Prepare knfsd for support of rsize/wsize of up to 1MB, over TCP 2006-10-04 07:55:16 -07:00
nfssvc.c [PATCH] knfsd: Allow max size of NFSd payload to be configured 2006-10-04 07:55:16 -07:00
nfsxdr.c [PATCH] knfsd: Prepare knfsd for support of rsize/wsize of up to 1MB, over TCP 2006-10-04 07:55:16 -07:00
stats.c [PATCH] knfsd: nfsd4: add per-operation server stats 2006-07-10 13:24:27 -07:00
vfs.c [PATCH] knfsd: make nfsd readahead params cache SMP-friendly 2006-10-04 07:55:16 -07:00