On Thursday 26 January 2006 21:52, Siddha, Suresh B wrote:
Con,
[PATCH] sched: implement nice support across physical cpus on SMP
I don't see imbalance calculations in find_busiest_group() take
prio_bias into account. This will result in wrong imbalance value and
will cause issues.
in 2.6.16-rc1:
find_busiest_group(....
load = __target_load(i, load_idx, idle);
else
load = __source_load(i, load_idx, idle);
where __target_load and __source_load is where we take into account prio_bias.
I'm not sure which code you're looking at, but Peter Williams is working on rewriting the smp nice balancing code in -mm at the moment so that is quite different from current linus tree.
For example on a DP system with HT, if there are three runnable processes
(simple infinite loop with same nice value), this patch is resulting in
bouncing of these 3 processes from one processor to another...Lets assume
if the 3 processes are scheduled as 2 in package-0 and 1 in package1..
Now when the busy processor on package-1 does load balance and as
imbalance doesn't take "prio_bias" into account, this will kick active
load balance on package-0.. And this is continuing for ever, resulting
in bouncing from one processor to another.
Even when the system is completely loaded and if there is an imbalance,
this patch causes wrong imabalance counts and cause unoptimized
movements.
Do you want to look into this and post a patch for 2.6.16?