sched: using dst_rq instead of this_rq during load balance
As we already have dst_rq in lb_env, using or changing "this_rq" do not make sense. This patch will replace "this_rq" with dst_rq in load_balance, and we don't need to change "this_rq" while process LBF_SOME_PINNED any more. Signed-off-by: Michael Wang <wangyun@linux.vnet.ibm.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/501F8357.3070102@linux.vnet.ibm.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
edde96eafc
commit
78feefc512
|
@ -4283,7 +4283,7 @@ redo:
|
||||||
goto out_balanced;
|
goto out_balanced;
|
||||||
}
|
}
|
||||||
|
|
||||||
BUG_ON(busiest == this_rq);
|
BUG_ON(busiest == env.dst_rq);
|
||||||
|
|
||||||
schedstat_add(sd, lb_imbalance[idle], env.imbalance);
|
schedstat_add(sd, lb_imbalance[idle], env.imbalance);
|
||||||
|
|
||||||
|
@ -4304,7 +4304,7 @@ redo:
|
||||||
update_h_load(env.src_cpu);
|
update_h_load(env.src_cpu);
|
||||||
more_balance:
|
more_balance:
|
||||||
local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
double_rq_lock(this_rq, busiest);
|
double_rq_lock(env.dst_rq, busiest);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cur_ld_moved - load moved in current iteration
|
* cur_ld_moved - load moved in current iteration
|
||||||
|
@ -4312,7 +4312,7 @@ more_balance:
|
||||||
*/
|
*/
|
||||||
cur_ld_moved = move_tasks(&env);
|
cur_ld_moved = move_tasks(&env);
|
||||||
ld_moved += cur_ld_moved;
|
ld_moved += cur_ld_moved;
|
||||||
double_rq_unlock(this_rq, busiest);
|
double_rq_unlock(env.dst_rq, busiest);
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
|
|
||||||
if (env.flags & LBF_NEED_BREAK) {
|
if (env.flags & LBF_NEED_BREAK) {
|
||||||
|
@ -4348,8 +4348,7 @@ more_balance:
|
||||||
if ((env.flags & LBF_SOME_PINNED) && env.imbalance > 0 &&
|
if ((env.flags & LBF_SOME_PINNED) && env.imbalance > 0 &&
|
||||||
lb_iterations++ < max_lb_iterations) {
|
lb_iterations++ < max_lb_iterations) {
|
||||||
|
|
||||||
this_rq = cpu_rq(env.new_dst_cpu);
|
env.dst_rq = cpu_rq(env.new_dst_cpu);
|
||||||
env.dst_rq = this_rq;
|
|
||||||
env.dst_cpu = env.new_dst_cpu;
|
env.dst_cpu = env.new_dst_cpu;
|
||||||
env.flags &= ~LBF_SOME_PINNED;
|
env.flags &= ~LBF_SOME_PINNED;
|
||||||
env.loop = 0;
|
env.loop = 0;
|
||||||
|
|
Loading…
Reference in New Issue