Re: [patch] scheduler: rebalance_tick interval update

From: Matthew Dobson
Date: Mon Nov 15 2004 - 20:54:40 EST

On Mon, 2004-11-15 at 17:17, Nick Piggin wrote:
> Darren Hart wrote:
> >The current rebalance_tick() code assigns each sched_domain's
> >last_balance field to += interval after performing a load_balance. If
> >interval is 10, this has the effect of saying: we want to run
> >load_balance at time = 10, 20, 30, 40, etc... If for example
> >last_balance=10 and for some reason rebalance_tick can't be run until
> >30, load_balance will be called and last_balance will be updated to 20,
> >causing it to call load_balance again immediately the next time it is
> >called since the interval is 10 and we are already at >30. It seems to
> >me that it would make much more sense for last_balance to be assigned
> >jiffies after a load_balance, then the meaning of last_balance is more
> >exact: "this domain was last balanced at jiffies" rather than "we last
> >handled the balance we were supposed to do at 20, at some indeterminate
> >time". The following patch makes this change.
> >
> >
> Hi Darren,
> This is how I first implemented it... but I think this will cause
> rebalance points of each processor to tend to become synchronised
> (rather than staggered) as ticks get lost.

But isn't that what this is supposed to stop:

unsigned long j = jiffies + CPU_OFFSET(this_cpu);
if (j - sd->last_balance >= interval) {
if (load_balance(this_cpu, this_rq, sd, idle)) {
/* We've pulled tasks over so no longer idle */
idle = NOT_IDLE;
sd->last_balance += interval;

The CPU_OFFSET() macro is designed to spread out the balancing so they
don't all occur at the same time, no?


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at