[osdl_staff_pdx] [nfsv4] Performance drop in iozone for reading large files

Stephen Hemminger shemminger at osdl.org
Fri Sep 15 06:31:59 EDT 2006


On Thu, 14 Sep 2006 23:53:03 -0700
Bryce Harrington <bryce at osdl.org> wrote:

> 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.


Sounds like a candidate for a 'git bisect' if it is that different.


More information about the NFSv4 mailing list