Re: regression in page writeback

Wu Fengguang
2009-09-23T09:38:03Z

On Wed, Sep 23, 2009 at 05:23:31PM +0800, Peter Zijlstra wrote:
> On Wed, 2009-09-23 at 10:19 +0100, Richard Kennedy wrote:
> >
> > I am concerned that the background writeout no longer stops when it
> > reaches the background threshold, as balance_dirty_pages requests all
> > dirty pages to be written. No doubt this is good for large linear writes
> > but what about more random write workloads?
>
> I've not had time to look over the current code, but write-out not
> stopping on reaching background threshold is a definite bug and needs to
> get fixed.

Yes, 2.6.31 code stops writeback when background threshold is reached.
But new behavior in latest git is to writeback all pages.

The code only checks over_bground_thresh() for kupdate works:

if (args->for_kupdate && args->nr_pages <= 0 &&
!over_bground_thresh())
break;

However the background work started by balance_dirty_pages() won't check
over_bground_thresh(). So it will move all dirty pages.

I think it's very weird to check over_bground_thresh() for kupdate
instead of background work. Jens must intended for the latter case.

Thanks,
Fengguang