linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Richard Kennedy <richard@rsk.demon.co.uk>
To: Wu Fengguang <fengguang.wu@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	"chris.mason" <chris.mason@oracle.com>,
	linux-mm <linux-mm@kvack.org>,
	lkml <linux-kernel@vger.kernel.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Jens Axboe <jens.axboe@oracle.com>,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>
Subject: Re: [RFC PATCH] v2 mm: balance_dirty_pages.  reduce calls to global_page_state to reduce cache references
Date: Mon, 07 Sep 2009 11:06:26 +0100	[thread overview]
Message-ID: <1252317986.2348.15.camel@castor> (raw)
In-Reply-To: <20090906035537.GA16063@localhost>

On Sun, 2009-09-06 at 11:55 +0800, Wu Fengguang wrote:
> On Fri, Sep 04, 2009 at 07:05:30PM +0800, Richard Kennedy wrote:
> > Reducing the number of times balance_dirty_pages calls global_page_state
> > reduces the cache references and so improves write performance on a
> > variety of workloads.
> > 
> > 'perf stats' of simple fio write tests shows the reduction in cache
> > access.
> > Where the test is fio 'write,mmap,600Mb,pre_read' on AMD AthlonX2 with
> > 3Gb memory (dirty_threshold approx 600 Mb)
> > running each test 10 times, dropping the fasted & slowest values then
> > taking 
> > the average & standard deviation
> > 
> > 		average (s.d.) in millions (10^6)
> > 2.6.31-rc8	648.6 (14.6)
> > +patch		620.1 (16.5)
> > 
> > Achieving this reduction is by dropping clip_bdi_dirty_limit as it  
> > rereads the counters to apply the dirty_threshold and moving this check
> > up into balance_dirty_pages where it has already read the counters.
> > 
> > Also by rearrange the for loop to only contain one copy of the limit
> > tests allows the pdflush test after the loop to use the local copies of
> > the counters rather than rereading them.
> > 
> > In the common case with no throttling it now calls global_page_state 5
> > fewer times and bdi_stat 2 fewer.
> > 
> > This version includes the changes suggested by 
> > Wu Fengguang <fengguang.wu@intel.com>
> 
> It seems that an redundant pages_written test can be reduced by
> 
> --- linux.orig/mm/page-writeback.c	2009-09-06 11:44:39.000000000 +0800
> +++ linux/mm/page-writeback.c	2009-09-06 11:44:42.000000000 +0800
> @@ -526,10 +526,6 @@ static void balance_dirty_pages(struct a
>  		    (background_thresh + dirty_thresh) / 2)
>  			break;
>  
> -		/* done enough? */
> -		if (pages_written >= write_chunk)
> -			break;
> -
>  		if (!bdi->dirty_exceeded)
>  			bdi->dirty_exceeded = 1;
>  
> @@ -547,7 +543,7 @@ static void balance_dirty_pages(struct a
>  			pages_written += write_chunk - wbc.nr_to_write;
>  			/* don't wait if we've done enough */
>  			if (pages_written >= write_chunk)
> -				continue;
> +				break;
>  		}
>  		congestion_wait(BLK_RW_ASYNC, HZ/10);
>  	}
> 
> Otherwise the patch looks good to me. Thank you for the nice work!
> 
> Reviewed-by: Wu Fengguang <fengguang.wu@intel.com>
> 
Thank you.

I'll give your suggestion a try & run some tests. I think you're right
it should be better. Not re-reading the global counters again should be
of some benefit!
regards
Richard

  reply	other threads:[~2009-09-07 10:06 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-04 11:05 [RFC PATCH] v2 mm: balance_dirty_pages. reduce calls to global_page_state to reduce cache references Richard Kennedy
2009-09-06  3:55 ` Wu Fengguang
2009-09-07 10:06   ` Richard Kennedy [this message]
2009-09-08 10:41     ` Richard Kennedy
2009-09-06 18:42 ` Jens Axboe
2009-09-07 10:11   ` Richard Kennedy
2009-09-07 10:42     ` Jens Axboe

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=1252317986.2348.15.camel@castor \
    --to=richard@rsk.demon.co.uk \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@linux-foundation.org \
    --cc=chris.mason@oracle.com \
    --cc=fengguang.wu@intel.com \
    --cc=jens.axboe@oracle.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    /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).