Hi Wu, > Subject: writeback: sync expired inodes first in background writeback > From: Wu Fengguang <fengguang.wu@xxxxxxxxx> > Date: Wed Jul 21 20:11:53 CST 2010 > > A background flush work may run for ever. So it's reasonable for it to > mimic the kupdate behavior of syncing old/expired inodes first. > > The policy is > - enqueue all newly expired inodes at each queue_io() time > - enqueue all dirty inodes if there are no more expired inodes to sync > > This will help reduce the number of dirty pages encountered by page > reclaim, eg. the pageout() calls. Normally older inodes contain older > dirty pages, which are more close to the end of the LRU lists. So > syncing older inodes first helps reducing the dirty pages reached by > the page reclaim code. > > CC: Jan Kara <jack@xxxxxxx> > Signed-off-by: Wu Fengguang <fengguang.wu@xxxxxxxxx> > --- > fs/fs-writeback.c | 23 ++++++++++++++++++----- > 1 file changed, 18 insertions(+), 5 deletions(-) > > --- linux-next.orig/fs/fs-writeback.c 2010-07-26 20:19:01.000000000 +0800 > +++ linux-next/fs/fs-writeback.c 2010-07-26 21:10:42.000000000 +0800 > @@ -217,14 +217,14 @@ static void move_expired_inodes(struct l > struct writeback_control *wbc) > { > unsigned long expire_interval = 0; > - unsigned long older_than_this; > + unsigned long older_than_this = 0; /* reset to kill gcc warning */ Maybe I am rather late. Nitpick. uninitialized_var is consistent. :) I haven't followed up this patch series. but his patch series is a fundamental way to go for reducing pageout. -- Kind regards, Minchan Kim -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>