From: Wu Fengguang <fengguang.wu@intel.com>
To: Dave Chinner <david@fromorbit.com>
Cc: Rik van Riel <riel@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>,
Jan Kara <jack@suse.cz>, Mel Gorman <mel@linux.vnet.ibm.com>,
Trond Myklebust <Trond.Myklebust@netapp.com>,
Itaru Kitayama <kitayama@cl.bb4u.ne.jp>,
Minchan Kim <minchan.kim@gmail.com>,
LKML <linux-kernel@vger.kernel.org>,
"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
Linux Memory Management List <linux-mm@kvack.org>
Subject: Re: [PATCH 0/6] writeback: moving expire targets for background/kupdate works
Date: Tue, 19 Apr 2011 16:02:20 +0800 [thread overview]
Message-ID: <20110419080220.GA7056@localhost> (raw)
In-Reply-To: <20110419063823.GD23985@dastard>
On Tue, Apr 19, 2011 at 02:38:23PM +0800, Dave Chinner wrote:
> On Tue, Apr 19, 2011 at 11:00:03AM +0800, Wu Fengguang wrote:
> >
> > Andrew,
> >
> > This aims to reduce possible pageout() calls by making the flusher
> > concentrate a bit more on old/expired dirty inodes.
>
> In what situation is this a problem? Can you demonstrate how you
> trigger it? And then how much improvement does this patchset make?
As Mel put it, "it makes sense to write old pages first to reduce the
chances page reclaim is initiating IO."
In last year's LSF, Rik presented the situation with a graph:
LRU head [*] dirty page
[ * * * * * * * * * * *]
Ideally, most dirty pages should lie close to the LRU tail instead of
LRU head. That requires the flusher thread to sync old/expired inodes
first (as there are obvious correlations between inode age and page
age), and to give fair opportunities to newly expired inodes rather
than sticking with some large eldest inodes (as larger inodes have
weaker correlations in the inode<=>page ages).
This patchset helps the flusher to meet both the above requirements.
The measurable improvements will depend a lot on the workload. Mel
once did some tests and observed it to help (but as large as his
forward flush patches ;)
https://lkml.org/lkml/2010/7/28/124
> > Patches 04, 05 have been updated since last post, please review.
> > The concerns from last review have been addressed.
> >
> > It runs fine on simple workloads over ext3/4, xfs, btrfs and NFS.
>
> But it starts propagating new differences between background and
> kupdate style writeback. We've been trying to reduce the number of
> permutations of writeback behaviour, so it seems to me to be wrong
> to further increase the behavioural differences. Indeed, why do we
> need "for kupdate" style writeback and "background" writeback
> anymore - can' we just use background style writeback for both?
This patchset actually brings the background work semantic/behavior
closer to the kupdate work.
The two type of works have different termination rules: one is the 30s
dirty expire time, another is the background_thresh in number of dirty
pages. So they have to be treated differently when selecting the inodes
to sync.
This "if" could possibly be eliminated later, but should be done
carefully in an independent patch, preferably after this patchset is
confirmed to work reliably in upstream.
- if (wbc->for_kupdate || wbc->for_background) {
expire_interval = msecs_to_jiffies(dirty_expire_interval * 10);
older_than_this = jiffies - expire_interval;
- }
Thanks,
Fengguang
next prev parent reply other threads:[~2011-04-19 8:02 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-19 3:00 [PATCH 0/6] writeback: moving expire targets for background/kupdate works Wu Fengguang
2011-04-19 3:00 ` [PATCH 1/6] writeback: pass writeback_control down to move_expired_inodes() Wu Fengguang
2011-04-19 3:00 ` [PATCH 2/6] writeback: the kupdate expire timestamp should be a moving target Wu Fengguang
2011-04-19 7:02 ` Dave Chinner
2011-04-19 7:20 ` Wu Fengguang
2011-04-19 9:31 ` Jan Kara
2011-04-19 3:00 ` [PATCH 3/6] writeback: sync expired inodes first in background writeback Wu Fengguang
2011-04-19 7:35 ` Dave Chinner
2011-04-19 9:57 ` Jan Kara
2011-04-19 12:56 ` Wu Fengguang
2011-04-19 13:46 ` Wu Fengguang
2011-04-20 1:21 ` Dave Chinner
2011-04-20 2:53 ` Wu Fengguang
2011-04-21 0:45 ` Dave Chinner
2011-04-21 2:06 ` Wu Fengguang
2011-04-21 3:01 ` Dave Chinner
2011-04-21 3:59 ` Wu Fengguang
2011-04-21 4:10 ` Wu Fengguang
2011-04-21 4:36 ` Christoph Hellwig
2011-04-21 6:36 ` Dave Chinner
2011-04-21 16:04 ` Jan Kara
2011-04-22 2:24 ` Wu Fengguang
2011-04-22 21:12 ` Jan Kara
2011-04-26 5:37 ` Wu Fengguang
2011-04-26 14:30 ` Jan Kara
2011-04-20 7:38 ` Wu Fengguang
2011-04-21 1:01 ` Dave Chinner
2011-04-21 1:47 ` Wu Fengguang
2011-04-19 3:00 ` [PATCH 4/6] writeback: introduce writeback_control.inodes_cleaned Wu Fengguang
2011-04-19 9:47 ` Jan Kara
2011-04-19 3:00 ` [PATCH 5/6] writeback: try more writeback as long as something was written Wu Fengguang
2011-04-19 10:20 ` Jan Kara
2011-04-19 11:16 ` Wu Fengguang
2011-04-19 21:10 ` Jan Kara
2011-04-20 7:50 ` Wu Fengguang
2011-04-20 15:22 ` Jan Kara
2011-04-21 3:33 ` Wu Fengguang
2011-04-21 4:39 ` Christoph Hellwig
2011-04-21 6:05 ` Wu Fengguang
2011-04-21 16:41 ` Jan Kara
2011-04-22 2:32 ` Wu Fengguang
2011-04-22 21:23 ` Jan Kara
2011-04-21 7:09 ` Dave Chinner
2011-04-21 7:14 ` Christoph Hellwig
2011-04-21 7:52 ` Dave Chinner
2011-04-21 8:00 ` Christoph Hellwig
2011-04-19 3:00 ` [PATCH 6/6] NFS: return -EAGAIN when skipped commit in nfs_commit_unstable_pages() Wu Fengguang
2011-04-19 3:29 ` Trond Myklebust
2011-04-19 3:55 ` Wu Fengguang
2011-04-21 4:40 ` Christoph Hellwig
2011-04-19 6:38 ` [PATCH 0/6] writeback: moving expire targets for background/kupdate works Dave Chinner
2011-04-19 8:02 ` Wu Fengguang [this message]
2011-04-21 4:34 ` Christoph Hellwig
2011-04-21 5:50 ` Wu Fengguang
2011-04-21 5:56 ` Christoph Hellwig
2011-04-21 6:07 ` Wu Fengguang
2011-04-21 7:17 ` Christoph Hellwig
2011-04-21 10:15 ` Wu Fengguang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110419080220.GA7056@localhost \
--to=fengguang.wu@intel.com \
--cc=Trond.Myklebust@netapp.com \
--cc=akpm@linux-foundation.org \
--cc=david@fromorbit.com \
--cc=jack@suse.cz \
--cc=kitayama@cl.bb4u.ne.jp \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mel@linux.vnet.ibm.com \
--cc=minchan.kim@gmail.com \
--cc=riel@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).