diff options
author | Greg Banks <gnb@melbourne.sgi.com> | 2006-10-04 02:15:49 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-04 07:55:16 -0700 |
commit | fce1456a19f5c08b688c29f00ef90fdfa074c79b (patch) | |
tree | 789afb4efe2764cabbd65f7d7069acb538711e8b /block | |
parent | 596bbe53eb3abfe7326b2f5e8afd614265c319c8 (diff) | |
download | linux-3.10-fce1456a19f5c08b688c29f00ef90fdfa074c79b.tar.gz linux-3.10-fce1456a19f5c08b688c29f00ef90fdfa074c79b.tar.bz2 linux-3.10-fce1456a19f5c08b688c29f00ef90fdfa074c79b.zip |
[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>
Diffstat (limited to 'block')
0 files changed, 0 insertions, 0 deletions