Re: Read/Write NFS I/O performance degraded by FLUSH_STABLE page flushing

Trond Myklebust
2009-06-05T21:22:03Z

On Fri, 2009-06-05 at 15:54 -0400, J. Bruce Fields wrote:
> On Fri, Jun 05, 2009 at 12:12:08PM -0400, Trond Myklebust wrote:
> > On Fri, 2009-06-05 at 10:54 -0400, Christoph Hellwig wrote:
> > > On Mon, Jun 01, 2009 at 06:30:08PM -0400, J. Bruce Fields wrote:
> > > > > NFSD stops calling ->fsync without a file struct.
> > > > >
> > > > > I think the open file cache will help us with that, if we can extend
> > > > > it to also cache open file structs for directories.
> > > >
> > > > Krishna Kumar--do you think that'd be a reasonable thing to do?
> > >
> > > Btw, do you have at least the basic open files cache queue for 2.6.31?
> > >
> >
> > Now that _will_ badly screw up the write gathering heuristic...
>
> How?
>

The heuristic looks at inode->i_writecount in order to figure out how
many nfsd threads are currently trying to write to the file. The
reference to i_writecount is held by the struct file.
The problam is that if you start sharing struct file among several nfsd
threads by means of a cache, then the i_writecount will not change, and
so the heuristic fails.

While we won't miss it much in NFSv3 and v4, it may change the
performance of the few systems out there that still believe NFSv2 is the
best thing since sliced bread...

Trond