Throughput problems with NFS between Linux and FreeBSD

tlambert2 at mindspring.com tlambert2 at mindspring.com
Fri Sep 19 13:06:41 PDT 2003


John-Mark Gurney wrote:
> Richard Sharpe wrote this message on Fri, Sep 19, 2003 at 10:38 -0700:
> > The problem seems to be the following code
> > 
> >         if (so->so_type == SOCK_STREAM)
> >                 siz = NFS_MAXPACKET + sizeof (u_long);
> >         else
> >                 siz = NFS_MAXPACKET;
> >         error = soreserve(so, siz, siz);
> > 
> > in src/sys/nfs/nfs_syscalls.c.
> > 
> > We added a sysctl to allow finer control over what is passed to soreserve.
> > 
> > With the fix in, it goes up to around wire speed when lots of data is in 
> > the cache.
> 
> What is the fix?  You don't say what adjustments to soreserve's parameters
> are necessary to improve performance?  Have you done testing against other
> clients to see how your changes will affect performance on those machines?

FWIW: I think he means that they change the value of NFS_MAXPACKET.

This would actually make sense: you really want the value to be NFS_MAXPACKET
times the number of packets you want to allow, up to the TCP window size...

...unless I'm seriously misunderstanding him.

-- Terry


More information about the freebsd-hackers mailing list