From: Nick Piggin It makes NEWLY_IDLE balances cause find_busiest_group return the busiest available group even if there isn't an imbalance. Basically - try a bit harder to prevent schedule emptying the runqueue. It is quite aggressive, but that isn't so bad because we don't (by default) do NEWLY_IDLE balancing across NUMA nodes, and NEWLY_IDLE balancing is always restricted to cache_hot tasks. It picked up a little bit of idle time that dbt2-pgsql was seeing... --- 25-akpm/kernel/sched.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) diff -puN kernel/sched.c~sched-less-idle kernel/sched.c --- 25/kernel/sched.c~sched-less-idle 2004-04-12 20:11:12.952227872 -0700 +++ 25-akpm/kernel/sched.c 2004-04-12 20:11:12.972224832 -0700 @@ -1629,7 +1629,8 @@ nextgroup: return busiest; out_balanced: - if (busiest && idle != NOT_IDLE && max_load > SCHED_LOAD_SCALE) { + if (busiest && (idle == NEWLY_IDLE || + (idle == IDLE && max_load > SCHED_LOAD_SCALE)) ) { *imbalance = 1; return busiest; } _