2008-12-08 02:47:51

by Ken Chen

[permalink] [raw]
Subject: [patch] sched: fix sd_parent_degenerate on non-numa smp machine

The addition of SD_SERIALIZE flag added to SD_NODE_INIT prevented top level
dummy numa sched_domain to be properly degenerated on non-numa smp machine.
The reason is that in sd_parent_degenerate(), it found that the child and
parent does not have comon sched_domain flags due to SD_SERIALIZE. However,
for non-numa smp box, the top level is a dummy with a single sched_group.

Filter out SD_SERIALIZE if it is on non-numa machine to properly degenerate
top level node sched_domain. this will cut back some of the sd domain walk
in the load balancer code.

Signed-off-by: Ken Chen <[email protected]>

diff --git a/kernel/sched.c b/kernel/sched.c
index b7480fb..6beae36 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -6814,6 +6814,8 @@ sd_parent_degenerate
SD_BALANCE_EXEC |
SD_SHARE_CPUPOWER |
SD_SHARE_PKG_RESOURCES);
+ if (nr_node_ids == 1)
+ pflags &= ~SD_SERIALIZE;
}
if (~cflags & pflags)
return 0;


2008-12-08 12:53:35

by Ingo Molnar

[permalink] [raw]
Subject: Re: [patch] sched: fix sd_parent_degenerate on non-numa smp machine


* Ken Chen <[email protected]> wrote:

> The addition of SD_SERIALIZE flag added to SD_NODE_INIT prevented top level
> dummy numa sched_domain to be properly degenerated on non-numa smp machine.
> The reason is that in sd_parent_degenerate(), it found that the child and
> parent does not have comon sched_domain flags due to SD_SERIALIZE. However,
> for non-numa smp box, the top level is a dummy with a single sched_group.
>
> Filter out SD_SERIALIZE if it is on non-numa machine to properly degenerate
> top level node sched_domain. this will cut back some of the sd domain walk
> in the load balancer code.
>
> Signed-off-by: Ken Chen <[email protected]>

applied to tip/sched/core, thanks Ken!

Ingo