[nfsv4] Performance drop in iozone for reading large files

Bryce Harrington bryce at osdl.org
Fri Sep 15 02:53:03 EDT 2006


On Thu, Sep 14, 2006 at 05:13:53PM -0700, Andrew Morton wrote:
> On Thu, 14 Sep 2006 16:58:05 -0700
> Bryce Harrington <bryce at osdl.org> wrote:
> 
> > On Wed, Sep 06, 2006 at 10:59:48AM -0400, Dean Hildebrand wrote:
> > > To prove/disprove the sever caching theory, here are a couple *echm* fun 
> > > things you can try:
> > > 1) While writing and reading the file, watch the memory on the server 
> > > using 'top'.  You should see it rise up an amount roughly equal to the 
> > > size of the file.  Once the file is deleted by iozone, the memory will 
> > > drop back down again.
> > > 2) After writing the file do not delete it (use -w I believe). Umount 
> > > the server, reboot the server, then mount the server and read the file.  
> > > This will read the file directly from disk.  Compare this performance to 
> > > your original read performance (which used the server cache).
> > 
> > I think we've satisfied ourselves that this generally describes what
> > we're seeing.  However, there is one other odd behavior we think may be
> > of interest.  Compare the following two charts:
> > 
> > 2.6.17 (stock):
> >     http://crucible.osdl.org/runs/1959/test_output/iozone.sys.log.png
> > 2.6.18-rc1 (stock):
> >     http://crucible.osdl.org/runs/1955/test_output/iozone.sys.log.png
> > 
> > Notice how the read performance in the second kernel has fallen below
> > write performance.  We're seeing this "read performance worse than write
> > performance" in the recently released CITI patch as well as in the git
> > trees.  For instance, see the 'nfsv4' iozone test cases at
> > http://crucible.osdl.org/runs/branches.html 
> 
> It appears that large linear reads of large, well-laid out files on ext3
> have taken a ~20% hit post-2.6.17.  Badari is looking into it.
> 
> If your server-side's filesystem is ext3 I'd suggest that you mount it with
> ext2 and retest.  If that fixes it, it's almost certainly the ext3
> regression.

Oh, cool, we'll give this a try.  Thanks!
 
> Alternatively, you could alter ext3_get_blocks_handle() so that it only
> ever does single-block mappings: I assume the way to do this is:
> 
> 	maxblocks = 1;
> 
> on entry to that function.

Bryce


More information about the NFSv4 mailing list