From: Wu Fengguang <fengguang.wu@intel.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: "akpm@linux-foundation.org" <akpm@linux-foundation.org>,
"mm-commits@vger.kernel.org" <mm-commits@vger.kernel.org>,
"richard@rsk.demon.co.uk" <richard@rsk.demon.co.uk>,
"chris.mason@oracle.com" <chris.mason@oracle.com>,
"jens.axboe@oracle.com" <jens.axboe@oracle.com>,
"mbligh@mbligh.org" <mbligh@mbligh.org>,
"miklos@szeredi.hu" <miklos@szeredi.hu>,
"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>
Subject: Re: + mm-balance_dirty_pages-reduce-calls-to-global_page_state-to-reduce-c ache-references.patch added to -mm tree
Date: Wed, 2 Sep 2009 17:57:39 +0800 [thread overview]
Message-ID: <20090902095739.GA31516@localhost> (raw)
In-Reply-To: <1251880300.7547.91.camel@twins>
On Wed, Sep 02, 2009 at 04:31:40PM +0800, Peter Zijlstra wrote:
> On Sat, 2009-08-22 at 20:11 +0200, Peter Zijlstra wrote:
> > > > + /* always throttle if over threshold */
> > > > + if (nr_reclaimable + nr_writeback < dirty_thresh) {
> > >
> > > That 'if' is a big behavior change. It effectively blocks every one
> > > and canceled Peter's proportional throttling work: the less a process
> > > dirtied, the less it should be throttled.
> >
> > Hmm, I think you're right, I had not considered that, thanks for
> > catching that.
>
> So in retrospect I think I might have been wrong here.
>
> The per task thing causes the bdi limit to be lower than the bdi limit
> based on writeback speed alone. That is, the more a task dirties, the
> lower the bdi limit is as seen for that task.
Right. If I understand it right, there will be a safety margin of about
(1/8) * dirty_limit for 1 heavy dirtier case, and that gap scales down
when there are more concurrent heavy dirtiers.
In principle, the ceiling will be a bit higher for a light dirtier to
make it easy to pass in the presence of more heavy dirtiers.
> So if we get a task that generates tons of dirty pages (dd) then it
> won't ever actually hit the full dirty limit, even if its the only task
> on the system, and this outer if() will always be true.
Right, we have the safety margin :)
> Only when we actually saturate the full dirty limit will we fall through
> and throttle, but that is ok -- we want to enforce the full limit.
>
> In short, a very aggressive dirtier will have a bdi limit lower than the
> total limit (at all times) leaving a little room at the top for the
> occasional dirtier to make quick progress.
>
> Wu, does that cover the scenario you had in mind?
Yes thanks! Please correct me if wrong:
- the lower-ceiling-for-heavier-dirtier algorithm in task_dirty_limit()
is elegant enough to prevent heavy dirtier to block light ones
- the test (nr_reclaimable + nr_writeback < dirty_thresh) is not
relevant in normal, but can be kept for safety in the form of
if (bdi_nr_reclaimable + bdi_nr_writeback < bdi_thresh &&
nr_reclaimable + nr_writeback < dirty_thresh)
break;
- clip_bdi_dirty_limit() could be removed: we have been secured by the
above test
Thanks,
Fengguang
next prev parent reply other threads:[~2009-09-02 9:57 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-21 22:50 + mm-balance_dirty_pages-reduce-calls-to-global_page_state-to-reduce-cache-references.patch added to -mm tree akpm
2009-08-22 2:51 ` + mm-balance_dirty_pages-reduce-calls-to-global_page_state-to-reduce-c ache-references.patch " Wu Fengguang
2009-08-22 2:51 ` Wu Fengguang
2009-08-22 18:11 ` Peter Zijlstra
2009-08-23 1:32 ` Wu Fengguang
2009-08-23 5:31 ` Peter Zijlstra
2009-08-23 7:27 ` Wu Fengguang
2009-08-23 7:45 ` Peter Zijlstra
2009-09-02 8:31 ` Peter Zijlstra
2009-09-02 9:57 ` Wu Fengguang [this message]
2009-09-02 10:45 ` Peter Zijlstra
2009-09-02 13:53 ` Richard Kennedy
2009-09-03 2:22 ` Wu Fengguang
2009-09-03 3:09 ` Wu Fengguang
2009-09-03 9:48 ` Richard Kennedy
2009-09-03 11:05 ` Wu Fengguang
2009-09-03 12:26 ` Richard Kennedy
2009-09-03 4:53 ` Wu Fengguang
2009-08-23 9:33 ` Richard Kennedy
2009-08-23 9:33 ` Richard Kennedy
2009-08-23 13:00 ` Wu Fengguang
2009-08-23 13:00 ` Wu Fengguang
2009-08-23 13:46 ` Richard Kennedy
2009-08-23 13:46 ` Richard Kennedy
2009-08-24 1:41 ` Wu Fengguang
2009-08-24 1:41 ` 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=20090902095739.GA31516@localhost \
--to=fengguang.wu@intel.com \
--cc=akpm@linux-foundation.org \
--cc=chris.mason@oracle.com \
--cc=jens.axboe@oracle.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=mbligh@mbligh.org \
--cc=miklos@szeredi.hu \
--cc=mm-commits@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=richard@rsk.demon.co.uk \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.