Messages in this thread | | | Date | Tue, 9 Dec 2008 07:34:48 +0100 | From | Ingo Molnar <> | Subject | Re: [BUG] idle_balance() does not call load_balance_newidle() |
| |
* Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com> wrote:
> * Ingo Molnar <mingo@elte.hu> [2008-12-08 16:49:39]: > > > > > * Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com> wrote: > > > > > Hi, > > > > > > load_balance_newidle() does not get called if SD_BALANCE_NEWIDLE is > > > set at higher level domain (3-CPU) and not in low level domain (2-MC). > > > > > > pulled_task is initialised to -1 and checked for non-zero which is > > > always true if the lowest level sched_domain does not have > > > SD_BALANCE_NEWIDLE flag set. > > > > > > Trivial fix to initialise pulled_task to zero. > > > Patch against 2.6.28-rc7 > > > > applied to tip/sched/core, thanks! (Not for v2.6.28 because this could > > affect performance.) > > Thanks Ingo. This patch does not change any functionality in v2.6.28 > and hence will not affect performance. The SD flags are not touched. I > found this bug while setting different SD flags at MC level and CPU > level in my power saving balance patches.
if it does not change any functionality then we would not be doing the change, right?
It does change functionality, because:
> > > load_balance_newidle() does not get called if SD_BALANCE_NEWIDLE is > > > set at higher level domain (3-CPU) and not in low level domain > > > (2-MC).
even though it's a bug fix, it affects how the SD flags are interpreted and acted upon by the load balancer - i.e. the change can impact performance.
Ingo
| |