Skip to content

Commit

Permalink
[PATCH] sched: remove staggering of load balancing
Browse files Browse the repository at this point in the history
Timer interrupts already are staggered.  We do not need an additional layer of
time staggering for short load balancing actions that take a reasonably small
portion of the time slice.

For load balancing on large sched_domains we will add a serialization later
that avoids concurrent load balance operations and thus has the same effect as
load staggering.

Signed-off-by: Christoph Lameter <clameter@sgi.com>
Cc: Peter Williams <pwil3058@bigpond.net.au>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Christoph Lameter <clameter@sgi.com>
Cc: "Siddha, Suresh B" <suresh.b.siddha@intel.com>
Cc: "Chen, Kenneth W" <kenneth.w.chen@intel.com>
Acked-by: Ingo Molnar <mingo@elte.hu>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Christoph Lameter authored and Linus Torvalds committed Dec 10, 2006
1 parent 571f6d2 commit 4211a9a
Showing 1 changed file with 2 additions and 8 deletions.
10 changes: 2 additions & 8 deletions kernel/sched.c
Original file line number Diff line number Diff line change
Expand Up @@ -2841,16 +2841,10 @@ static void active_load_balance(struct rq *busiest_rq, int busiest_cpu)
* Balancing parameters are set up in arch_init_sched_domains.
*/

/* Don't have all balancing operations going off at once: */
static inline unsigned long cpu_offset(int cpu)
{
return jiffies + cpu * HZ / NR_CPUS;
}

static void
rebalance_tick(int this_cpu, struct rq *this_rq, enum idle_type idle)
{
unsigned long this_load, interval, j = cpu_offset(this_cpu);
unsigned long this_load, interval;
struct sched_domain *sd;
int i, scale;

Expand Down Expand Up @@ -2885,7 +2879,7 @@ rebalance_tick(int this_cpu, struct rq *this_rq, enum idle_type idle)
if (unlikely(!interval))
interval = 1;

if (j - sd->last_balance >= interval) {
if (jiffies - sd->last_balance >= interval) {
if (load_balance(this_cpu, this_rq, sd, idle)) {
/*
* We've pulled tasks over so either we're no
Expand Down

0 comments on commit 4211a9a

Please sign in to comment.