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

Trond Myklebust
2009-05-29T20:22:11Z

On Fri, 2009-05-29 at 16:09 -0400, Brian R Cowan wrote:
> I think you missed the context of my comment... Previous to this
> 4-year-old update, the writes were not sent with STABLE, this update
> forced that behavior. So, before then we sent an UNSTABLE write request.
> This would either give us back the UNSTABLE or FILE_SYNC response. My
> question is this: When the server sends back UNSTABLE, as a response to
> UNSTABLE, exactly what happens? By some chance is there a separate worker
> thread that occasionally sends COMMITs back to the server?

pdflush will do it occasionally, but otherwise the COMMITs are all sent
synchronously by the thread that is flushing out the data.

In this case, the flush is done by the call to nfs_wb_page() in
nfs_readpage(), and it waits synchronously for the unstable WRITE and
the subsequent COMMIT to finish.

Note that there is no way to bypass the wait: if some other thread jumps
in and sends the COMMIT (after the unstable write has returned), then
the caller of nfs_wb_page() still has to wait for that call to complete,
and for nfs_commit_release() to mark the page as clean.

Trond