Re: [RFC][PATCH 7/7] writeback: balance_dirty_pages() shall write more than dirtied pages

Peter Zijlstra
2009-09-10T15:54:40Z

On Thu, 2009-09-10 at 23:41 +0800, Wu Fengguang wrote:
> > > So btrfs_file_write() explicitly calls
> > > balance_dirty_pages_ratelimited_nr() to get throttled.
> >
> > Right, so what is wrong with than, and how does this patch fix that?
> >
> > [ the only thing you have to be careful with is that you don't
> > excessively grow the error bound on the dirty limit ]
>
> Then we could form a loop:
>
> btrfs_file_write(): dirty 1024 pages
> balance_dirty_pages(): write up to 12 pages (= ratelimit_pages * 1.5)
>
> in which the writeback rate cannot keep up with dirty rate,
> and the dirty pages go all the way beyond dirty_thresh.

Ah, ok so this is to keep the error bound on the dirty limit bounded,
because we can break out of balance_dirty_pages() early, the /* We've
done our duty */ break.

Which unbalances the duty vs the dirty ratio.

I figure that with the task dirty limit stuff we could maybe try to get
rid of this break.. worth a try.

> Sorry for writing such a vague changelog!

np, as long as we get there :-)

Change makes sense now, thanks!