Why is NFSv4 so slow?
Jeremy Chadwick
freebsd at jdc.parodius.com
Mon Jun 28 04:58:55 UTC 2010
On Sun, Jun 27, 2010 at 10:47:41PM -0500, Rick C. Petty wrote:
> On Sun, Jun 27, 2010 at 08:04:28PM -0400, Rick Macklem wrote:
> >
> > Weird, I don't see that here. The only thing I can think of is that the
> > experimental client/server will try to do I/O at the size of MAXBSIZE
> > by default, which might be causing a burst of traffic your net interface
> > can't keep up with. (This can be turned down to 32K via the
> > rsize=32768,wsize=32768 mount options. I found this necessary to avoid
> > abissmal performance on some Macs for the Mac OS X port.)
>
> I just ran into the speed problem again after remounting. This time
> I tried to do a "make buildworld" and make got stuck on [newnfsreq] for
> ten minutes, with no other filesystem activity on either client or server.
>
> The file system corruption is still pretty bad. I can no longer build any
> ports on one machine, because after the port is extracted, the config.sub
> files are being filled with all zeros. It took me awhile to track this
> down while trying to build devel/libtool22:
>
> + ac_build_alias=amd64-portbld-freebsd8.1
> + test xamd64-portbld-freebsd8.1 = x
> + test xamd64-portbld-freebsd8.1 = x
> + /bin/sh libltdl/config/config.sub amd64-portbld-freebsd8.1
> + ac_cv_build=''
> + printf '%s\n' 'configure:4596: result: '
> + printf '%s\n' ''
>
> + as_fn_error 'invalid value of canonical build' 4600 5
> + as_status=0
> + test 0 -eq 0
> + as_status=1
> + test 5
>
> And although my work dir is on local disk,
>
> % hd work/libtool-2.2.6b/libltdl/config/config.sub:
>
> 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> |................|
> *
> 00007660
>
> Again, my ports tree is mounted as FSType nfs with option nfsv4.
> FreeBSD/amd64 8.1-PRERELEASE r208408M GENERIC kernel.
This sounds like NFSv4 is "tickling" some kind of bug in your NIC driver
but I'm not entirely sure. Can you provide output from:
1) ifconfig -a (you can X out the IPs + MACs if you want)
2) netstat -m
3) vmstat -i
4) prtconf -lvc (only need the Ethernet-related entries)
5) sysctl dev.XXX.N (ex. for em0, XXX=em, N=0)
And also check "dmesg" to see if there's any messages the kernel has
been spitting out which look relevant? Thanks.
--
| Jeremy Chadwick jdc at parodius.com |
| Parodius Networking http://www.parodius.com/ |
| UNIX Systems Administrator Mountain View, CA, USA |
| Making life hard for others since 1977. PGP: 4BD6C0CB |
More information about the freebsd-stable
mailing list