Skip to content

Commit 81c9886

Browse files
Nishanth Aravamudantorvalds
authored andcommitted
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 <[email protected]> Reviewed-by: Christoph Lameter <[email protected]> Acked-by: David Rientjes <[email protected]> Cc: Anton Blanchard <[email protected]> Cc: Tejun Heo <[email protected]> Cc: Oleg Nesterov <[email protected]> Cc: Jan Kara <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Tetsuo Handa <[email protected]> Cc: Wanpeng Li <[email protected]> Cc: Joonsoo Kim <[email protected]> Cc: Ben Herrenschmidt <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
1 parent 5acda9d commit 81c9886

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

kernel/kthread.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ int tsk_fork_get_node(struct task_struct *tsk)
217217
if (tsk == kthreadd_task)
218218
return tsk->pref_node_fork;
219219
#endif
220-
return numa_node_id();
220+
return NUMA_NO_NODE;
221221
}
222222

223223
static void create_kthread(struct kthread_create_info *create)
@@ -369,7 +369,7 @@ struct task_struct *kthread_create_on_cpu(int (*threadfn)(void *data),
369369
{
370370
struct task_struct *p;
371371

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,
373373
cpu);
374374
if (IS_ERR(p))
375375
return p;

0 commit comments

Comments
 (0)