From: Christoph Lameter When the per cpu sched domains are build then they also need to be placed on the node where the cpu resides otherwise we will have frequent off node accesses which will slow down the system. Signed-off-by: Christoph Lameter Cc: Ingo Molnar Cc: Nick Piggin Signed-off-by: Andrew Morton --- kernel/sched.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff -puN kernel/sched.c~scheduler-numa-aware-placement-of-sched_group_allnodes kernel/sched.c --- a/kernel/sched.c~scheduler-numa-aware-placement-of-sched_group_allnodes +++ a/kernel/sched.c @@ -6224,9 +6224,10 @@ static int build_sched_domains(const cpu > SD_NODES_PER_DOMAIN*cpus_weight(nodemask)) { if (!sched_group_allnodes) { sched_group_allnodes - = kmalloc(sizeof(struct sched_group) - * MAX_NUMNODES, - GFP_KERNEL); + = kmalloc_node(sizeof(struct sched_group) + * MAX_NUMNODES, + GFP_KERNEL, + cpu_to_node(i)); if (!sched_group_allnodes) { printk(KERN_WARNING "Can not alloc allnodes sched group\n"); _