From: Nick Piggin Remove the very aggressive idle stuff that has recently gone into 2.6 - it is going against the direction we are trying to go. Hopefully we can regain performance through other methods. Signed-off-by: Nick Piggin Acked-by: Ingo Molnar Signed-off-by: Andrew Morton --- 25-akpm/include/asm-i386/topology.h | 1 - 25-akpm/include/asm-x86_64/topology.h | 1 - 25-akpm/include/linux/topology.h | 1 - 25-akpm/kernel/sched.c | 25 ++++--------------------- 4 files changed, 4 insertions(+), 24 deletions(-) diff -puN include/asm-i386/topology.h~sched-remove-aggressive-idle-balancing include/asm-i386/topology.h --- 25/include/asm-i386/topology.h~sched-remove-aggressive-idle-balancing 2005-03-10 19:09:34.000000000 -0800 +++ 25-akpm/include/asm-i386/topology.h 2005-03-10 19:09:34.000000000 -0800 @@ -85,7 +85,6 @@ static inline cpumask_t pcibus_to_cpumas .flags = SD_LOAD_BALANCE \ | SD_BALANCE_EXEC \ | SD_BALANCE_NEWIDLE \ - | SD_WAKE_IDLE \ | SD_WAKE_BALANCE, \ .last_balance = jiffies, \ .balance_interval = 1, \ diff -puN include/asm-x86_64/topology.h~sched-remove-aggressive-idle-balancing include/asm-x86_64/topology.h --- 25/include/asm-x86_64/topology.h~sched-remove-aggressive-idle-balancing 2005-03-10 19:09:34.000000000 -0800 +++ 25-akpm/include/asm-x86_64/topology.h 2005-03-10 19:09:34.000000000 -0800 @@ -58,7 +58,6 @@ static inline cpumask_t __pcibus_to_cpum .flags = SD_LOAD_BALANCE \ | SD_BALANCE_NEWIDLE \ | SD_BALANCE_EXEC \ - | SD_WAKE_IDLE \ | SD_WAKE_BALANCE, \ .last_balance = jiffies, \ .balance_interval = 1, \ diff -puN include/linux/topology.h~sched-remove-aggressive-idle-balancing include/linux/topology.h --- 25/include/linux/topology.h~sched-remove-aggressive-idle-balancing 2005-03-10 19:09:34.000000000 -0800 +++ 25-akpm/include/linux/topology.h 2005-03-10 19:09:34.000000000 -0800 @@ -127,7 +127,6 @@ | SD_BALANCE_NEWIDLE \ | SD_BALANCE_EXEC \ | SD_WAKE_AFFINE \ - | SD_WAKE_IDLE \ | SD_WAKE_BALANCE, \ .last_balance = jiffies, \ .balance_interval = 1, \ diff -puN kernel/sched.c~sched-remove-aggressive-idle-balancing kernel/sched.c --- 25/kernel/sched.c~sched-remove-aggressive-idle-balancing 2005-03-10 19:09:34.000000000 -0800 +++ 25-akpm/kernel/sched.c 2005-03-10 19:09:34.000000000 -0800 @@ -415,22 +415,6 @@ static inline runqueue_t *this_rq_lock(v return rq; } -#ifdef CONFIG_SCHED_SMT -static int cpu_and_siblings_are_idle(int cpu) -{ - int sib; - for_each_cpu_mask(sib, cpu_sibling_map[cpu]) { - if (idle_cpu(sib)) - continue; - return 0; - } - - return 1; -} -#else -#define cpu_and_siblings_are_idle(A) idle_cpu(A) -#endif - #ifdef CONFIG_SCHEDSTATS /* * Called when a process is dequeued from the active array and given @@ -1653,16 +1637,15 @@ int can_migrate_task(task_t *p, runqueue /* * Aggressive migration if: - * 1) the [whole] cpu is idle, or + * 1) task is cache cold, or * 2) too many balance attempts have failed. */ - if (cpu_and_siblings_are_idle(this_cpu) || \ - sd->nr_balance_failed > sd->cache_nice_tries) + if (sd->nr_balance_failed > sd->cache_nice_tries) return 1; if (task_hot(p, rq->timestamp_last_tick, sd)) - return 0; + return 0; return 1; } @@ -2133,7 +2116,7 @@ static void active_load_balance(runqueue if (cpu_isset(cpu, visited_cpus)) continue; cpu_set(cpu, visited_cpus); - if (!cpu_and_siblings_are_idle(cpu) || cpu == busiest_cpu) + if (cpu == busiest_cpu) continue; target_rq = cpu_rq(cpu); _