DragonFly commits List (threaded) for 2005-03
cvs commit: src/sys/vfs/nfs nfs.h nfs_nqlease.c nfs_socket.c nfs_syscalls.c
dillon 2005/03/27 15:51:43 PST
DragonFly src repository
sys/vfs/nfs nfs.h nfs_nqlease.c nfs_socket.c
Do a better job distributing RPC requests on the NFS server side. This
applies to both TCP and UDP mounts.
Previously when multiple requests were received all at once only one would
be immediately distributed to an idle NFSD, causing the requests to be
serialized on the server if no other nfsd's were active at the time and if
no other event occurs to wake up other idle nfsd's.
Now nfsrv_getstream() returns a count of the number of RPCs that were parsed
and multiple NFSDs will be woken up to process them.
Some fine-tuning is still required. In particular, it is actually less
efficient for the server to wakeup multiple NFSd (at least on a UP machine)
if the requests do not entail I/O. However, since this only effects client
operations that are issued in parallel (e.g. a make -j build on the client)
I believe the positive aspects outweight the negative ones.
Revision Changes Path
1.10 +3 -1 src/sys/vfs/nfs/nfs.h
1.23 +0 -1 src/sys/vfs/nfs/nfs_nqlease.c
1.25 +37 -21 src/sys/vfs/nfs/nfs_socket.c
1.20 +4 -3 src/sys/vfs/nfs/nfs_syscalls.c