Problem: 2 CPU system: if the cpu-0 has two high priority and cpu-1 has one normal priority task, how can the current code detect this imbalance because imbalance will be always < busiest_load_per_task and max_load - this_load will be < 2 * busiest_load_per_task and pwr_move will be <= pwr_now. Solution: Modify the assessment of small imbalances to take into account the relative sizes of busiest_load_per_task and this_load_per_task. This is exploiting the fact that if the difference between the loads is greater than busiest_load_per_task and busiest_load_per_task is greater than this_load_per_task then moving busiest_load_per_task worth of load from busiest to this will be an improvement in the distribution of weighted load. Required patches: sched-prevent-high-load-weight-tasks-suppressing-balancing.patch sched-improve-stability-of-smpnice-load-balancing.patch Note: This patch makes no change to load balancing in the case where all tasks are nice==0. Signed-off-by: Peter Williams -- Peter Williams pwil3058@bigpond.net.au "Learning, n. The kind of ignorance distinguishing the studious." -- Ambrose Bierce