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