scp more perfectly fills the pipe than NFS/TCP

Zaphod Beeblebrox zbeeble at gmail.com
Mon Dec 21 21:06:27 UTC 2009


I must say that I often deeply respect your position and your work,
but your recent willingness to jump into a conversation without
reading the whole of it ... simply to point out some point where your
pet is better than the subject of the list... is disappointing.  Case
in point...

On Mon, Dec 21, 2009 at 3:42 PM, Matthew Dillon
<dillon at apollo.backplane.com> wrote:
>    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.

I should almost label that ObContent.

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

Ref. my origional post.  The connection is DSL, but completely
managed.  10ms is fairly good for DSL

>    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.

Again, from the original post, not only was -T specified, but (as you
say) it is the default for FreeBSD 8.

for a 4 megabit pipe, very few transactions need to be in flight to
fill it.  Does the TCP NFS use tech like selective ack?  Is it the
same stack as the one that scp is using?


More information about the freebsd-hackers mailing list