Re: [git pull] scheduler fixes

Ingo Molnar
2009-01-17T16:01:51Z

* Mike Galbraith <efault@gmx.de> wrote:

> On Sat, 2009-01-17 at 04:43 -0800, Andrew Morton wrote:
> > http://bugzilla.kernel.org/show_bug.cgi?id=12465 just popped up - another
> > scheduler regression. It has been bisected.
>
> Seems pretty clear. I'd suggest reverting it.

We can revert it (and will revert it if no solution is found), but i'd
also like to understand why it happens, because that kind of regression
from this change is unexpected - we might be hiding some bug that could
pop up under less debuggable circumstances, so we need to understand it
while we have a chance.

Below is the commit in question. Avi, any ideas what makes KVM special
here? Perhaps its use of "preempt notifiers" is causing a problem somehow?

Ingo

-------------->
>From 14800984706bf6936bbec5187f736e928be5c218 Mon Sep 17 00:00:00 2001
From: Mike Galbraith <efault@gmx.de>
Date: Fri, 7 Nov 2008 15:26:50 +0100
Subject: [PATCH] sched: fine-tune SD_MC_INIT

Tune SD_MC_INIT the same way as SD_CPU_INIT:
unset SD_BALANCE_NEWIDLE, and set SD_WAKE_BALANCE.

This improves vmark by 5%:

vmark 132102 125968 125497 messages/sec avg 127855.66 .984
vmark 139404 131719 131272 messages/sec avg 134131.66 1.033

Signed-off-by: Mike Galbraith <efault@gmx.de>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

# *DOCUMENTATION*
---
include/linux/topology.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/include/linux/topology.h b/include/linux/topology.h
index 34a7ee0..a8d8405 100644
--- a/include/linux/topology.h
+++ b/include/linux/topology.h
@@ -120,10 +120,10 @@ void arch_update_cpu_topology(void);
.wake_idx = 1, \
.forkexec_idx = 1, \
.flags = SD_LOAD_BALANCE \
- | SD_BALANCE_NEWIDLE \
| SD_BALANCE_FORK \
| SD_BALANCE_EXEC \
| SD_WAKE_AFFINE \
+ | SD_WAKE_BALANCE \
| SD_SHARE_PKG_RESOURCES\
| BALANCE_FOR_MC_POWER, \
.last_balance = jiffies, \