:    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 
                                        <dil...@backplane.com>


To Unsubscribe: send mail to majord...@freebsd.org
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to