Re: [PATCH 17/18] writeback: fix dirtied pages accounting onredirty

From: Wu Fengguang
Date: Tue Sep 06 2011 - 21:19:15 EST


On Wed, Sep 07, 2011 at 08:22:22AM +0800, Jan Kara wrote:
> On Tue 06-09-11 18:18:56, Peter Zijlstra wrote:
> > On Sun, 2011-09-04 at 09:53 +0800, Wu Fengguang wrote:
> > > De-account the accumulative dirty counters on page redirty.
> > >
> > > Page redirties (very common in ext4) will introduce mismatch between
> > > counters (a) and (b)
> > >
> > > a) NR_DIRTIED, BDI_DIRTIED, tsk->nr_dirtied
> > > b) NR_WRITTEN, BDI_WRITTEN
> > >
> > > This will introduce systematic errors in balanced_rate and result in
> > > dirty page position errors (ie. the dirty pages are no longer balanced
> > > around the global/bdi setpoints).
> > >
> >
> > So wtf is ext4 doing? Shouldn't a page stay dirty until its written out?
> >
> > That is, should we really frob around this behaviour or fix ext4 because
> > its on crack?
> Fengguang, could you please verify your findings with recent kernel? I
> believe ext4 got fixed in this regard some time ago already (and yes, old
> delalloc writeback code in ext4 was terrible).

Jan, attached is the results for 3.1-rc4, before and after this patchset.
The test case is ext4, 1 dd, bs=4k, dirty_bytes=1GB.

Judging from global_dirtied_written.png, the dirtied/written lines are
still departing away from each other...

Thanks,
Fengguang

Attachment: global_dirtied_written.png
Description: PNG image

Attachment: balance_dirty_pages-pause.png
Description: PNG image

Attachment: balance_dirty_pages-pages.png
Description: PNG image

Attachment: global_dirtied_written.png
Description: PNG image

Attachment: balance_dirty_pages-pause.png
Description: PNG image

Attachment: balance_dirty_pages-pages.png
Description: PNG image