: The problem that occurs on the FreeBSD server is simply that the
: nfsrv_commit() procedure calls fsync() on the file... on the *ENTIRE*
: file, for every commit rpc, rather then syncing just the offset/range
: requested. I am looking into ways to fix this.
:
Ok, I've verified the problem. The nfsrv_commit() code running on the
server is definitely the culprit. I was able to make a tentitive patch
which increased NFSv3 write performance to 10 MBytes/sec -- the maximum
my 100BaseTX network can do.
CURRENT in tree: 2.5 MBytes/sec
CURRENT w/ asynchronized commit rpc: 4.5 MBytes/sec
CURRENT w/ asy commit and fixed nfsrv_commit: 10 MBytes/sec (1)
note(1): network is maxed out.
Running bonnie returned around 5.2 MBytes/sec using putc, 3.5 MBytes/sec
doing rewrite (but also 3.5 MBytes/sec going the other way), and
10 MBytes/sec writing intelligently. Throughout the test the low
level disk I/O on the server was able to do sustained clustering
at 64KB/t.
I have a backlog of patches so it may be a week or more before this one
gets tested and committed into CURRENT. It's a little racey for putting
into STABLE but maybe after a month of testing on CURRENT we will be
able to do it.
-Matt
Matthew Dillon
<[EMAIL PROTECTED]>
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message