mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Richard Kennedy <richard@rsk.demon.co.uk>
Cc: jens.axboe@oracle.com, a.p.zijlstra@chello.nl,
	linux-kernel@vger.kernel.org
Subject: Re: [RFC][PATCH] mm: reorder balance_dirty_pages to improve (some) write performance
Date: Mon, 27 Jul 2009 15:57:39 -0700	[thread overview]
Message-ID: <20090727155739.0e96b9e3.akpm@linux-foundation.org> (raw)
In-Reply-To: <1248445717.19856.63.camel@localhost.localdomain>

On Fri, 24 Jul 2009 15:28:37 +0100
Richard Kennedy <richard@rsk.demon.co.uk> wrote:

> Reorder balance_dirty_pages to do less work in the default case &
> improve write performance in some cases.
> 
> Running simple fio mmap write tests on x86_64 with 3gb of memory on
> 2.6.31-rc3 where each test was run 10 times, dropping the slowest &
> fastest results the average write speeds are
> 
> size rc3 | +patch  difference
>      MiB/s (s.d.)
> 
> 400m 374.75  ( 8.15) | 382.575 ( 8.24)  + 7.825
> 500m 363.625 (10.91) | 378.375 (10.86)  +14.75
> 600m 308.875 (10.86) | 374.25  ( 7.91)  +65.375
> 700m 188     ( 4.75) | 209     ( 7.23)  +21
> 800m 140.375 ( 2.56) | 154.5   ( 2.98)  +14.275
> 900m 124.875 ( 0.99) | 125.5   ( 9.62)  +0.625
> 
> 
> This patch helps write performance when the test size is close to the
> allowed number of dirty pages (approx 600m on this machine). Once the
> test size becomes larger than 900m there is no significant difference.
> 
> 
> Signed-off-by: Richard Kennedy <richard@rsk.demon.co.uk>
> ----
> 
> This change only make a difference to workloads where the number of
> dirty pages is close to (dirty_ratio * memory size). Once a test writes
> more than that the speed of the disk is the most important factor so any
> effect of this patch is lost.
> I've only tried this on my desktop, so it really needs testing on
> different hardware.
> Does anyone feel like trying it ? 

So what does the patch actually do?

AFACIT the main change is to move this:

			if (bdi->dirty_exceeded)
				bdi->dirty_exceeded = 0;

from after the loop and into the body of the loop.

So that we no longer clear dirty_exceeded in the three other places
where we break out of the loop.

IOW, dirty_exceeded can be left true (even if it shouldn't be?) on exit
from balance_dirty_pages().

What was the rationale for leaving dirty_exceeded true in those cases,
and why did it speed up that workload?

Thanks.

  reply	other threads:[~2009-07-27 22:58 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-24 14:28 Richard Kennedy
2009-07-27 22:57 ` Andrew Morton [this message]
2009-07-29 10:05   ` Richard Kennedy

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=20090727155739.0e96b9e3.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=jens.axboe@oracle.com \
    --cc=linux-kernel@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®