linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Mel Gorman <mel@csn.ul.ie>
To: Nick Piggin <npiggin@suse.de>,
	Pekka Enberg <penberg@cs.helsinki.fi>,
	Christoph Lameter <cl@linux-foundation.org>
Cc: heiko.carstens@de.ibm.com, sachinp@in.ibm.com,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	Mel Gorman <mel@csn.ul.ie>
Subject: [PATCH 2/3] slqb: Treat pages freed on a memoryless node as local node
Date: Fri, 18 Sep 2009 20:34:10 +0100	[thread overview]
Message-ID: <1253302451-27740-3-git-send-email-mel@csn.ul.ie> (raw)
In-Reply-To: <1253302451-27740-1-git-send-email-mel@csn.ul.ie>

When a page is being freed belonging to a remote node, it is added to a
separate list. When the node is memoryless, pages are always allocated
on the front for the per-cpu local and always freed remote. This is
similar to a leak and the machine quickly goes OOM and drives over the
cliff faster than Thelma and Louise.

This patch treats pages being freed from remote nodes as if they are local
if the CPU is on a memoryless node. It's now known at time of writing if this
is the best approach so reviewed-bys from those familiar with SLQB are needed.

Signed-off-by: Mel Gorman <mel@csn.ul.ie>
---
 mm/slqb.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/mm/slqb.c b/mm/slqb.c
index 4d72be2..0f46b56 100644
--- a/mm/slqb.c
+++ b/mm/slqb.c
@@ -1726,6 +1726,7 @@ static __always_inline void __slab_free(struct kmem_cache *s,
 	struct kmem_cache_cpu *c;
 	struct kmem_cache_list *l;
 	int thiscpu = smp_processor_id();
+	int thisnode = numa_node_id();
 
 	c = get_cpu_slab(s, thiscpu);
 	l = &c->list;
@@ -1733,12 +1734,14 @@ static __always_inline void __slab_free(struct kmem_cache *s,
 	slqb_stat_inc(l, FREE);
 
 	if (!NUMA_BUILD || !slab_numa(s) ||
-			likely(slqb_page_to_nid(page) == numa_node_id())) {
+			likely(slqb_page_to_nid(page) == numa_node_id() ||
+			!node_state(thisnode, N_HIGH_MEMORY))) {
 		/*
 		 * Freeing fastpath. Collects all local-node objects, not
 		 * just those allocated from our per-CPU list. This allows
 		 * fast transfer of objects from one CPU to another within
-		 * a given node.
+		 * a given node. If the current node is memoryless, the
+		 * pages are treated as local
 		 */
 		set_freepointer(s, object, l->freelist.head);
 		l->freelist.head = object;
-- 
1.6.3.3

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2009-09-18 19:34 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-18 19:34 [RFC PATCH 0/3] Hatchet job for SLQB on memoryless configurations Mel Gorman
2009-09-18 19:34 ` [PATCH 1/3] slqb: Do not use DEFINE_PER_CPU for per-node data Mel Gorman
2009-09-20  8:45   ` Pekka Enberg
2009-09-20 10:00     ` Tejun Heo
2009-09-20 10:12       ` Pekka Enberg
2009-09-20 15:55         ` Tejun Heo
2009-09-21  6:24           ` Pekka Enberg
2009-09-21  8:46             ` Mel Gorman
2009-09-21  8:30           ` Sachin Sant
2009-09-21  8:42             ` Mel Gorman
2009-09-21  9:00               ` Tejun Heo
2009-09-21  9:44                 ` Mel Gorman
2009-09-21  9:53                   ` Tejun Heo
2009-09-21 10:04                     ` Mel Gorman
2009-09-21  9:02               ` Sachin Sant
2009-09-21  9:09                 ` Mel Gorman
2009-09-21 13:04               ` Mel Gorman
2009-09-21 13:31                 ` Pekka Enberg
2009-09-21 13:45                 ` Tejun Heo
2009-09-21 13:57                   ` Mel Gorman
2009-09-21 23:54                     ` Benjamin Herrenschmidt
2009-09-20 14:04     ` Mel Gorman
2009-09-18 19:34 ` Mel Gorman [this message]
2009-09-18 21:01   ` [PATCH 2/3] slqb: Treat pages freed on a memoryless node as local node Christoph Lameter
2009-09-19 11:46     ` Mel Gorman
2009-09-21 17:34       ` Lee Schermerhorn
2009-09-22 13:33         ` Mel Gorman
2009-09-22 18:29           ` Lee Schermerhorn
2009-09-18 19:34 ` [PATCH 3/3] slqb: Allow SLQB to be used on PPC and S390 Mel Gorman

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=1253302451-27740-3-git-send-email-mel@csn.ul.ie \
    --to=mel@csn.ul.ie \
    --cc=cl@linux-foundation.org \
    --cc=heiko.carstens@de.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=npiggin@suse.de \
    --cc=penberg@cs.helsinki.fi \
    --cc=sachinp@in.ibm.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).