Commit 81c98869faa5f3a9457c93efef908ef476326b31
kthread: ensure locality of task_struct allocations
In the presence of memoryless nodes, numa_node_id() will return the current CPU's NUMA node, but that may not be where we expect to allocate from memory from. Instead, we should rely on the fallback code in the memory allocator itself, by using NUMA_NO_NODE. Also, when calling kthread_create_on_node(), use the nearest node with memory to the cpu in question, rather than the node it is running on. Signed-off-by: Nishanth Aravamudan <nacc@linux.vnet.ibm.com> Reviewed-by: Christoph Lameter <cl@linux.com> Acked-by: David Rientjes <rientjes@google.com> Cc: Anton Blanchard <anton@samba.org> Cc: Tejun Heo <tj@kernel.org> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Jan Kara <jack@suse.cz> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Cc: Wanpeng Li <liwanp@linux.vnet.ibm.com> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com> Cc: Ben Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 1 changed file with 2 additions and 2 deletions Side-by-side Diff
... | ... | @@ -217,7 +217,7 @@ |
217 | 217 | if (tsk == kthreadd_task) |
218 | 218 | return tsk->pref_node_fork; |
219 | 219 | #endif |
220 | - return numa_node_id(); | |
220 | + return NUMA_NO_NODE; | |
221 | 221 | } |
222 | 222 | |
223 | 223 | static void create_kthread(struct kthread_create_info *create) |
... | ... | @@ -369,7 +369,7 @@ |
369 | 369 | { |
370 | 370 | struct task_struct *p; |
371 | 371 | |
372 | - p = kthread_create_on_node(threadfn, data, cpu_to_node(cpu), namefmt, | |
372 | + p = kthread_create_on_node(threadfn, data, cpu_to_mem(cpu), namefmt, | |
373 | 373 | cpu); |
374 | 374 | if (IS_ERR(p)) |
375 | 375 | return p; |
-
mentioned in commit ad2c81
-
mentioned in commit 109228
-
mentioned in commit 109228
-
mentioned in commit ad2c81
-
mentioned in commit 109228
-
mentioned in commit 109228
-
mentioned in commit ad2c81
-
mentioned in commit 109228
-
mentioned in commit 109228
-
mentioned in commit ad2c81
-
mentioned in commit 109228
-
mentioned in commit 109228
-
mentioned in commit ad2c81
-
mentioned in commit 109228
-
mentioned in commit 109228
-
mentioned in commit ad2c81
-
mentioned in commit 109228
-
mentioned in commit 109228
-
mentioned in commit ad2c81
-
mentioned in commit 109228
-
mentioned in commit 109228
-
mentioned in commit ad2c81
-
mentioned in commit 109228
-
mentioned in commit 109228
-
mentioned in commit ad2c81
-
mentioned in commit 109228
-
mentioned in commit 109228
-
mentioned in commit ad2c81
-
mentioned in commit 109228
-
mentioned in commit 109228
-
mentioned in commit ad2c81
-
mentioned in commit 109228
-
mentioned in commit 109228
-
mentioned in commit ad2c81
-
mentioned in commit 109228
-
mentioned in commit 109228
-
mentioned in commit ad2c81
-
mentioned in commit 109228
-
mentioned in commit 109228