Messages in this thread | | | Subject | Re: [BUG] idle_balance() does not call load_balance_newidle() | From | Peter Zijlstra <> | Date | Mon, 08 Dec 2008 16:27:31 +0100 |
| |
On Mon, 2008-12-08 at 20:52 +0530, Vaidyanathan Srinivasan 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 > > Thanks, > Vaidy > > Signed-off-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Seems sane
> --- > > kernel/sched.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > > diff --git a/kernel/sched.c b/kernel/sched.c > index f79c7c4..4abdce1 100644 > --- a/kernel/sched.c > +++ b/kernel/sched.c > @@ -3801,7 +3801,7 @@ out_balanced: > static void idle_balance(int this_cpu, struct rq *this_rq) > { > struct sched_domain *sd; > - int pulled_task = -1; > + int pulled_task = 0; > unsigned long next_balance = jiffies + HZ; > cpumask_t tmpmask; >
| |