浏览代码

[PATCH] scheduler: NUMA aware placement of sched_group_allnodes

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 <clameter@sgi.com>
Acked-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Nick Piggin <nickpiggin@yahoo.com.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Christoph Lameter 18 年之前
父节点
当前提交
ce164428c4
共有 1 个文件被更改,包括 4 次插入3 次删除
  1. 4 3
      kernel/sched.c

+ 4 - 3
kernel/sched.c

@@ -6349,9 +6349,10 @@ static int build_sched_domains(const cpumask_t *cpu_map)
 				> SD_NODES_PER_DOMAIN*cpus_weight(nodemask)) {
 				> SD_NODES_PER_DOMAIN*cpus_weight(nodemask)) {
 			if (!sched_group_allnodes) {
 			if (!sched_group_allnodes) {
 				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) {
 				if (!sched_group_allnodes) {
 					printk(KERN_WARNING
 					printk(KERN_WARNING
 					"Can not alloc allnodes sched group\n");
 					"Can not alloc allnodes sched group\n");