Slow NFSv4 performance, was: Re: ZFSv28+NFSv4 poor file creation
performance, "sync=disabled" has no effect
David Brodbeck
brodbd at uw.edu
Wed Sep 7 23:17:56 UTC 2011
On Wed, Sep 7, 2011 at 3:19 PM, Rick Macklem <rmacklem at uoguelph.ca> wrote:
> Yea, I just tried a quick test using Fedora15 mounting the FreeBSD NFS
> server and then extracted a small tarball. Here's what the RPC counts
> were for NFSv3 and NFSv4 mounts (Open replaces Create for file creation
> in NFSv4):
>
> Client Getattr Setattr Read Write Create Open
> Fedora-NFSv3 12 249 35 75 60 0
> Fedora-NFSv4 744 249 35 75 0 121
> FreeBSDNFSv3 64 189 35 75 60 0
> FreeBSDNFSv4 943 189 35 75 0 61
>
> Two obvious things:
> 1 - Fedora15 does 2 Opens for each create, for NFSv4.
> 2 - NFSv4 does a massive # of Getattrs, however most of these will
> be in the compound RPCs with other Ops, so it doesn't mean
> that these are creating a larger load on the server.
> Put another way, the Getattrs done as a part of other RPCs
> don't get counted for NFSv3, but they are separate Ops in the
> NFSv4 compound and, therefore, do get counted.
> *** This was NOT a serious benchmark and I didn't bother to list all
> the RPC counts. Do not read this as a serious performance comparison,
> it was simply meant to get a hint as to why there was a difference
> between NFSv3 and NFSv4 for this case.
>
I've also found this isn't just a Linux client problem.
I tested a FreeBSD-9.0 client against a FreeBSD-9.0 server. Bonnie++ won't
run on FreeBSD NFS mounts due to PR kern/26142, so I hacked up a quick
script that times how long it takes to create 10,000 files. I averaged
times over four runs; the backing filesystem was a UFS ramdisk.
FreeBSD client -> FreeBSD server, NFSv4: 95.43s
FreeBSD client -> FreeBSD server, NFSv3: 24.77s
So basically NFSv4 against a FreeBSD server is nearly 4x slower at doing
file creation than NFSv3, even when there's no disk latency involved.
I did the same test with Linux and the results were similar, although the
performance gap wasn't as wide:
Linux client -> FreeBSD server, NFSv4: 71.25s
Linux client -> FreeBSD server, NFSv3: 34.08s
Sorry, but I can't think of anything within the NFS server. It just does
> the operations that the client hands to it by performing the VOP_xxx()
> calls.
> I will take a look at a packet trace, but I doubt I'll learn anything
> useful
> from it.
>
Hm, okay. Unfortunately this has a big impact on us, because file creation
speed happens to be one of the more user-visible aspects of server
performance on our system.
--
David Brodbeck
System Administrator, Linguistics
University of Washington
More information about the freebsd-fs
mailing list