• Trond Myklebust's avatar
    [PATCH] Make nfs_find_request() scale · ca738a2b
    Trond Myklebust authored
    nfs_find_request() needs to be called every time we schedule a write
    on the page cache. Currently it is implemented as a linked list which
    needs to be traversed completely in the case where we don't already
    have a pending write request on the page in question.
    
    The following patch adopts the new radix tree, as is already used in
    the page cache. Performance change is more or less negligeable with
    the current hard limit of 256 outstanding write requests per mount.
    
    However when I remove this limit then the old nfs_find_request()
    actually results in a 50% reduction in speed on my benchmark test
    (iozone with 4 threads each writing a 512Mb file on a 512Mb Linux
    client against a Solaris server on 100Mbit switched net). With this
    patch, the result for the same benchmark is a 50% increase in speed.
    ca738a2b
pagelist.c 13.3 KB