Messages in this thread | | | Date | Wed, 23 Sep 2009 17:37:53 +0800 | From | Wu Fengguang <> | Subject | Re: regression in page writeback |
| |
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
| |