Skip to content

Commit cfc0311

Browse files
JoonsooKimIngo Molnar
authored andcommitted
sched: Don't consider other cpus in our group in case of NEWLY_IDLE
Commit 88b8dac makes load_balance() consider other cpus in its group, regardless of idle type. When we do NEWLY_IDLE balancing, we should not consider it, because a motivation of NEWLY_IDLE balancing is to turn this cpu to non idle state if needed. This is not the case of other cpus. So, change code not to consider other cpus for NEWLY_IDLE balancing. With this patch, assign 'if (pulled_task) this_rq->idle_stamp = 0' in idle_balance() is corrected, because NEWLY_IDLE balancing doesn't consider other cpus. Assigning to 'this_rq->idle_stamp' is now valid. Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com> Tested-by: Jason Low <jason.low2@hp.com> Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com> Cc: Davidlohr Bueso <davidlohr.bueso@hp.com> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1366705662-3587-4-git-send-email-iamjoonsoo.kim@lge.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
1 parent de5eb2d commit cfc0311

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

kernel/sched/fair.c

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5026,8 +5026,21 @@ static int load_balance(int this_cpu, struct rq *this_rq,
50265026
.cpus = cpus,
50275027
};
50285028

5029+
/*
5030+
* For NEWLY_IDLE load_balancing, we don't need to consider
5031+
* other cpus in our group
5032+
*/
5033+
if (idle == CPU_NEWLY_IDLE) {
5034+
env.dst_grpmask = NULL;
5035+
/*
5036+
* we don't care max_lb_iterations in this case,
5037+
* in following patch, this will be removed
5038+
*/
5039+
max_lb_iterations = 0;
5040+
} else
5041+
max_lb_iterations = cpumask_weight(env.dst_grpmask);
5042+
50295043
cpumask_copy(cpus, cpu_active_mask);
5030-
max_lb_iterations = cpumask_weight(env.dst_grpmask);
50315044

50325045
schedstat_inc(sd, lb_count[idle]);
50335046

0 commit comments

Comments
 (0)