| From 96e8ca704b57ce160c9903ad04e19c1347f66c9e Mon Sep 17 00:00:00 2001 |
| From: Nikhil Rao <ncrao@google.com> |
| Date: Thu, 10 Feb 2011 10:23:29 +0100 |
| Subject: sched: Fix idle balancing |
| |
| Commit: d5ad140bc1505a98c0f040937125bfcbb508078f upstream |
| |
| An earlier commit reverts idle balancing throttling reset to fix a 30% |
| regression in volanomark throughput. We still need to reset idle_stamp |
| when we pull a task in newidle balance. |
| |
| Reported-by: Alex Shi <alex.shi@intel.com> |
| Signed-off-by: Nikhil Rao <ncrao@google.com> |
| Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> |
| LKML-Reference: <1290022924-3548-1-git-send-email-ncrao@google.com> |
| Signed-off-by: Ingo Molnar <mingo@elte.hu> |
| Signed-off-by: Mike Galbraith <efault@gmx.de> |
| Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| --- |
| kernel/sched.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/kernel/sched.c |
| +++ b/kernel/sched.c |
| @@ -4692,8 +4692,10 @@ static void idle_balance(int this_cpu, s |
| interval = msecs_to_jiffies(sd->balance_interval); |
| if (time_after(next_balance, sd->last_balance + interval)) |
| next_balance = sd->last_balance + interval; |
| - if (pulled_task) |
| + if (pulled_task) { |
| + this_rq->idle_stamp = 0; |
| break; |
| + } |
| } |
| if (pulled_task || time_after(jiffies, this_rq->next_balance)) { |
| /* |