Play with the read-ahead mount options for NFS, but it might require
    more work with that kind of latency.  You need to be able to have
    a lot of RPC's in-flight to maintain the pipeline with higher latencies.
    At least 16 and possibly more.

    It might be easier to investigate why the latency is so high and fix
    that first.  10ms is way too high for a LAN.

    I remember there was some work in the FreeBSD tree to clean up the
    client-side NFS rpc mechanics but if they are still threaded (kernel
    thread or user thread, doesn't matter) with one synchronous RPC per
    thread then a large amount of read-ahead will cause the requests to be
    issued out of order over the wire (for both TCP and UDP NFS mounts),
    which really messes up the server-side heuristics.  Plus the
    client-side threads wind up competing with each other for the
    socket lock.  So there is a limit to how large a read-ahead you
    can specify and still get good results.

    If they are using a single kernel thread for socket reading and a
    single kernel thread for socket writing (i.e. a 100% async RPC model,
    which is what DFly uses), then you can boost the read-ahead to 50+.
    At that point the socket buffer becomes the limiting factor in the
    pipeline.

    Make sure the NFS mount is TCP (It defaults to TCP in FreeBSD 8+).  UDP
    mounts will not perform well with any read-ahead greater then 3 or 4
    RPCs because occassional seek latencies on the server will cause
    random UDP RPCs to timeout and retry, which completely destroys
    performance.  UDP mounts have no understanding of the RPC queue backlog
    on the server and treat each RPC independently for timeout/retry
    purposes.  So one minor stall can blow up every single pending RPC
    backed up behind the one that stalled.

                                                -Matt

_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to