DragonFly kernel List (threaded) for 2009-07
Major NFS changes in master.
A ton of NFS work went into master today, and there may be some
system destabilization until all the kinks can be worked out.
The new NFS code completely reworks the RPC mechanics such that
two kernel threads per mount can handle any number of concurrent
asynchronous BIOs. One thread reads from the socket, and the other
thread writes. The old 'many nfsiod processes' method is gone
forever (nfsiod no longer has any effect), and there are basically
no limitations on the number of concurrent I/Os which can be running.
No more nfsiod's! Yah!
I'm getting very good performance numbers on the read side for both
UDP and TCP mounts but I still have a lot of tuning to do. On my
on-motherboard GigE (nfe0) I get near wire speed when running
tar or dd (reads)... 80-90 MBytes/sec from server-cache, and limited by
server-disk-I/O when not from server-cache.
I have not made the new kernel threads MPSAFE yet (they are almost
there now but it was a bit too much to chew off until what has been
done can be stabilized).
As of today BIO READs use the new mechanic and it is readily apparent
if you play with mounts on the (new) client side using mount_nfs -a 4,
-a 8, -a 16, etc (up to -a 32). TCP (-T) tends to do better because
the packets don't get fragmented as they do with UDP.
BIO WRITEs will follow tomorrow, and also directory read-aheads.