Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Apr 2013 20:36:55 -0400 (EDT)
From:      Rick Macklem <rmacklem@uoguelph.ca>
To:        Jeremy Chadwick <jdc@koitsu.org>
Cc:        freebsd-fs@freebsd.org
Subject:   Re: NFS Performance issue against NetApp
Message-ID:  <972106612.1125159.1366850215231.JavaMail.root@erie.cs.uoguelph.ca>
In-Reply-To: <20130424231808.GA20882@icarus.home.lan>

next in thread | previous in thread | raw e-mail | index | archive | help
Jeremy Chadwick wrote:
> On Wed, Apr 24, 2013 at 04:08:24PM -0700, Marc G. Fournier wrote:
> >
> > On 2013-04-24, at 16:02 , Rick Macklem <rmacklem@uoguelph.ca> wrote:
> >
> > >>
> > > Along with rsize,wsize you might want to try increasing readahead.
> > > The
> > > default is only 1.
> >
> > Stupid question on this, possibly, but are the current defaults
> > "sane" anymore, or residual from 'the old days'? Like, I've read in
> > many places where you should raise rsize/wsize =EF=BF=BD in what
> > circumstances would leaving as the defaults make sense?
>=20
> From what I can discern, the defaults on stable/9 (for an NFS client)
> are 8192 -- see sys/nfsclient/nfs.h, NFS_WSIZE and NFS_RSIZE.
>=20
For the new client, it defaults to the min(MAXBSIZE, server-max), where
server-max is whatever the server says is its maximum (also MAXBSIZE for
the new server). I think the old server uses 32768.
These numbers are for the default tcp mounts. Specify udp (or mntudp) and
I think the default becomes 16384.

If you explicitly set rsize=3DN,wsize=3DN on a mount, those sizes will be
used unless they are greater than min(MAXBSIZE, server-max). MAXBSIZE is
the limit for the client side buffer cache and server-max is whatever
the server says is its max, so the client never uses a value greater than
that.

For readahead, the default is 1. This seems rather small to me and I think =
is
in the "from the old days" category. You can set it to
a larger value, although there is an ifdef'd upper limit, which is what
you'll get if you specify a really large value for readahead. Admittedly,
if you are using a large rsize,wsize on a low latency LAN, readahead=3D1
may be sufficient.

As someone else noted, if you are using head or stable/9, "nfsstat -m"
shows you what is actually being used, for the new client only.

rick

> --
> | Jeremy Chadwick jdc@koitsu.org |
> | UNIX Systems Administrator http://jdc.koitsu.org/ |
> | Mountain View, CA, US |
> | Making life hard for others since 1977. PGP 4BD6C0CB |



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?972106612.1125159.1366850215231.JavaMail.root>