Major NFS changes in master.

Matthew Dillon dillon at
Fri Jul 17 23:08:24 PDT 2009

    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.

					Matthew Dillon 
					<dillon at>

More information about the Kernel mailing list