From: Ravikiran G Thirumalai <kiran@scalex86.org>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [patch] mm: Convert global dirty_exceeded flag to per-node node_dirty_exceeded
Date: Tue, 17 Jan 2006 17:29:53 -0800 [thread overview]
Message-ID: <20060118012953.GC5289@localhost.localdomain> (raw)
In-Reply-To: <20060116181323.7a5f0ac7.akpm@osdl.org>
On Mon, Jan 16, 2006 at 06:13:23PM -0800, Andrew Morton wrote:
> Ravikiran G Thirumalai <kiran@scalex86.org> wrote:
> >
> > Convert global dirty_exceeded flag to per-node node_dirty_exceeded.
> >
> > dirty_exceeded ping pongs between nodes in order to force all cpus in
> > the system to increase the frequency of calls to balance_dirty_pages.
> >
> > Currently dirty_exceeded is used by balance_dirty_pages_ratelimited to
> > force all CPUs in the system call balance_dirty_pages often, in order to
> > reduce the amount of dirty pages in the entire system (based on
> > dirty_thresh and one CPU exceeding thee ratelimits). As dirty_exceeded
> > is a global variable, it will ping-pong between nodes of a NUMA system
> > which is not good.
>
> Did you not test this obvious little optimisation?
We ran the test we encountered this problem on with your patch.
At first it looked like it did not help. But later we found that there was
false sharing on this variable. So padding dirty_exceeded to cacheline
along with your patch helps.
Thanks,
Kiran
Avoid false sharing on dirty_exceeded.
Signed-off-by: Ravikiran Thirumalai <kiran@scalex86.org>
Index: build-2.6.15/mm/page-writeback.c
===================================================================
--- build-2.6.15.orig/mm/page-writeback.c 2006-01-17 12:46:00.000000000 -0800
+++ build-2.6.15/mm/page-writeback.c 2006-01-17 16:21:47.000000000 -0800
@@ -46,7 +46,7 @@
static long ratelimit_pages = 32;
static long total_pages; /* The total number of pages in the machine. */
-static int dirty_exceeded; /* Dirty mem may be over limit */
+static int dirty_exceeded __cacheline_aligned_in_smp; /* Dirty mem may be over limit */
/*
* When balance_dirty_pages decides that the caller needs to perform some
next prev parent reply other threads:[~2006-01-18 1:30 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-17 2:03 [patch] mm: Convert global dirty_exceeded flag to per-node node_dirty_exceeded Ravikiran G Thirumalai
2006-01-17 2:13 ` Andrew Morton
2006-01-18 1:29 ` Ravikiran G Thirumalai [this message]
2006-01-18 2:09 ` Andrew Morton
2006-01-18 3:09 ` Ravikiran G Thirumalai
2006-01-18 3:22 ` Andrew Morton
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=20060118012953.GC5289@localhost.localdomain \
--to=kiran@scalex86.org \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.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