From: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Anton Blanchard <anton@samba.org>,
Christoph Lameter <cl@linux.com>,
Andrew Morton <akpm@linux-foundation.org>,
Tejun Heo <tj@kernel.org>, Oleg Nesterov <oleg@redhat.com>,
Jan Kara <jack@suse.cz>, David Rientjes <rientjes@google.com>,
Thomas Gleixner <tglx@linutronix.de>,
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>,
linux-mm@kvack.org, Wanpeng Li <liwanp@linux.vnet.ibm.com>,
Joonsoo Kim <iamjoonsoo.kim@lge.com>,
Ben Herrenschmidt <benh@kernel.crashing.org>
Subject: [PATCH] kthread: ensure locality of task_struct allocations
Date: Tue, 28 Jan 2014 10:38:08 -0800 [thread overview]
Message-ID: <20140128183808.GB9315@linux.vnet.ibm.com> (raw)
In the presence of memoryless nodes, numa_node_id()/cpu_to_node() will
return the current CPU's NUMA node, but that may not be where we expect
to allocate from memory from. Instead, we should use
numa_mem_id()/cpu_to_mem(). On one ppc64 system with a memoryless Node
0, this ends up saving nearly 500M of slab due to less fragmentation.
Signed-off-by: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
diff --git a/kernel/kthread.c b/kernel/kthread.c
index b5ae3ee..8573e4e 100644
--- a/kernel/kthread.c
+++ b/kernel/kthread.c
@@ -217,7 +217,7 @@ int tsk_fork_get_node(struct task_struct *tsk)
if (tsk == kthreadd_task)
return tsk->pref_node_fork;
#endif
- return numa_node_id();
+ return numa_mem_id();
}
static void create_kthread(struct kthread_create_info *create)
@@ -369,7 +369,7 @@ struct task_struct *kthread_create_on_cpu(int (*threadfn)(void *data),
{
struct task_struct *p;
- p = kthread_create_on_node(threadfn, data, cpu_to_node(cpu), namefmt,
+ p = kthread_create_on_node(threadfn, data, cpu_to_mem(cpu), namefmt,
cpu);
if (IS_ERR(p))
return p;
--
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>
WARNING: multiple messages have this Message-ID (diff)
From: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Anton Blanchard <anton@samba.org>,
Christoph Lameter <cl@linux.com>,
Andrew Morton <akpm@linux-foundation.org>,
Tejun Heo <tj@kernel.org>, Oleg Nesterov <oleg@redhat.com>,
Jan Kara <jack@suse.cz>, David Rientjes <rientjes@google.com>,
Thomas Gleixner <tglx@linutronix.de>,
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
Wanpeng Li <liwanp@linux.vnet.ibm.com>,
Joonsoo Kim <iamjoonsoo.kim@lge.com>,
Ben Herrenschmidt <benh@kernel.crashing.org>
Subject: [PATCH] kthread: ensure locality of task_struct allocations
Date: Tue, 28 Jan 2014 10:38:08 -0800 [thread overview]
Message-ID: <20140128183808.GB9315@linux.vnet.ibm.com> (raw)
In the presence of memoryless nodes, numa_node_id()/cpu_to_node() will
return the current CPU's NUMA node, but that may not be where we expect
to allocate from memory from. Instead, we should use
numa_mem_id()/cpu_to_mem(). On one ppc64 system with a memoryless Node
0, this ends up saving nearly 500M of slab due to less fragmentation.
Signed-off-by: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
diff --git a/kernel/kthread.c b/kernel/kthread.c
index b5ae3ee..8573e4e 100644
--- a/kernel/kthread.c
+++ b/kernel/kthread.c
@@ -217,7 +217,7 @@ int tsk_fork_get_node(struct task_struct *tsk)
if (tsk == kthreadd_task)
return tsk->pref_node_fork;
#endif
- return numa_node_id();
+ return numa_mem_id();
}
static void create_kthread(struct kthread_create_info *create)
@@ -369,7 +369,7 @@ struct task_struct *kthread_create_on_cpu(int (*threadfn)(void *data),
{
struct task_struct *p;
- p = kthread_create_on_node(threadfn, data, cpu_to_node(cpu), namefmt,
+ p = kthread_create_on_node(threadfn, data, cpu_to_mem(cpu), namefmt,
cpu);
if (IS_ERR(p))
return p;
next reply other threads:[~2014-01-28 18:38 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-28 18:38 Nishanth Aravamudan [this message]
2014-01-28 18:38 ` [PATCH] kthread: ensure locality of task_struct allocations Nishanth Aravamudan
2014-01-29 8:13 ` David Rientjes
2014-01-29 8:13 ` David Rientjes
2014-01-29 15:58 ` Christoph Lameter
2014-01-29 15:58 ` Christoph Lameter
2014-01-30 0:27 ` David Rientjes
2014-01-30 0:27 ` David Rientjes
2014-01-30 6:14 ` Eric Dumazet
2014-01-30 6:14 ` Eric Dumazet
2014-01-30 22:47 ` David Rientjes
2014-01-30 22:47 ` David Rientjes
2014-01-30 23:08 ` Nishanth Aravamudan
2014-01-30 23:08 ` Nishanth Aravamudan
2014-01-30 23:31 ` David Rientjes
2014-01-30 23:31 ` David Rientjes
2014-01-31 15:14 ` Christoph Lameter
2014-01-31 15:14 ` Christoph Lameter
2014-01-29 15:57 ` Christoph Lameter
2014-01-29 15:57 ` Christoph Lameter
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=20140128183808.GB9315@linux.vnet.ibm.com \
--to=nacc@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=anton@samba.org \
--cc=benh@kernel.crashing.org \
--cc=cl@linux.com \
--cc=iamjoonsoo.kim@lge.com \
--cc=jack@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=liwanp@linux.vnet.ibm.com \
--cc=oleg@redhat.com \
--cc=penguin-kernel@I-love.SAKURA.ne.jp \
--cc=rientjes@google.com \
--cc=tglx@linutronix.de \
--cc=tj@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 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.