| From 396e894d289d69bacf5acd983c97cd6e21a14c08 Mon Sep 17 00:00:00 2001 |
| From: Peter Zijlstra <a.p.zijlstra@chello.nl> |
| Date: Fri, 9 Jul 2010 15:12:27 +0200 |
| Subject: sched: Revert nohz_ratelimit() for now |
| |
| From: Peter Zijlstra <a.p.zijlstra@chello.nl> |
| |
| commit 396e894d289d69bacf5acd983c97cd6e21a14c08 upstream. |
| |
| Norbert reported that nohz_ratelimit() causes his laptop to burn about |
| 4W (40%) extra. For now back out the change and see if we can adjust |
| the power management code to make better decisions. |
| |
| Reported-by: Norbert Preining <preining@logic.at> |
| Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> |
| Acked-by: Mike Galbraith <efault@gmx.de> |
| Cc: Arjan van de Ven <arjan@infradead.org> |
| LKML-Reference: <new-submission> |
| Signed-off-by: Ingo Molnar <mingo@elte.hu> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| include/linux/sched.h | 6 ------ |
| kernel/sched.c | 10 ---------- |
| kernel/time/tick-sched.c | 2 +- |
| 3 files changed, 1 insertion(+), 17 deletions(-) |
| |
| --- a/include/linux/sched.h |
| +++ b/include/linux/sched.h |
| @@ -274,17 +274,11 @@ extern cpumask_var_t nohz_cpu_mask; |
| #if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ) |
| extern int select_nohz_load_balancer(int cpu); |
| extern int get_nohz_load_balancer(void); |
| -extern int nohz_ratelimit(int cpu); |
| #else |
| static inline int select_nohz_load_balancer(int cpu) |
| { |
| return 0; |
| } |
| - |
| -static inline int nohz_ratelimit(int cpu) |
| -{ |
| - return 0; |
| -} |
| #endif |
| |
| /* |
| --- a/kernel/sched.c |
| +++ b/kernel/sched.c |
| @@ -1232,16 +1232,6 @@ void wake_up_idle_cpu(int cpu) |
| smp_send_reschedule(cpu); |
| } |
| |
| -int nohz_ratelimit(int cpu) |
| -{ |
| - struct rq *rq = cpu_rq(cpu); |
| - u64 diff = rq->clock - rq->nohz_stamp; |
| - |
| - rq->nohz_stamp = rq->clock; |
| - |
| - return diff < (NSEC_PER_SEC / HZ) >> 1; |
| -} |
| - |
| #endif /* CONFIG_NO_HZ */ |
| |
| static u64 sched_avg_period(void) |
| --- a/kernel/time/tick-sched.c |
| +++ b/kernel/time/tick-sched.c |
| @@ -325,7 +325,7 @@ void tick_nohz_stop_sched_tick(int inidl |
| } while (read_seqretry(&xtime_lock, seq)); |
| |
| if (rcu_needs_cpu(cpu) || printk_needs_cpu(cpu) || |
| - arch_needs_cpu(cpu) || nohz_ratelimit(cpu)) { |
| + arch_needs_cpu(cpu)) { |
| next_jiffies = last_jiffies + 1; |
| delta_jiffies = 1; |
| } else { |