diff options
author | Michael Wang <wangyun@linux.vnet.ibm.com> | 2012-08-06 04:41:59 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2012-08-13 12:58:15 -0400 |
commit | 78feefc512a09165627dd534111f651b6c8e605f (patch) | |
tree | 7bd554141d64cc6c934d8dd6e74c9d9c81897d51 /kernel | |
parent | edde96eafc91a510f404e7b82cfc0ecb608505ee (diff) |
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>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sched/fair.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 99285a85e210..287bfaca6420 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c | |||
@@ -4283,7 +4283,7 @@ redo: | |||
4283 | goto out_balanced; | 4283 | goto out_balanced; |
4284 | } | 4284 | } |
4285 | 4285 | ||
4286 | BUG_ON(busiest == this_rq); | 4286 | BUG_ON(busiest == env.dst_rq); |
4287 | 4287 | ||
4288 | schedstat_add(sd, lb_imbalance[idle], env.imbalance); | 4288 | schedstat_add(sd, lb_imbalance[idle], env.imbalance); |
4289 | 4289 | ||
@@ -4304,7 +4304,7 @@ redo: | |||
4304 | update_h_load(env.src_cpu); | 4304 | update_h_load(env.src_cpu); |
4305 | more_balance: | 4305 | more_balance: |
4306 | local_irq_save(flags); | 4306 | local_irq_save(flags); |
4307 | double_rq_lock(this_rq, busiest); | 4307 | double_rq_lock(env.dst_rq, busiest); |
4308 | 4308 | ||
4309 | /* | 4309 | /* |
4310 | * cur_ld_moved - load moved in current iteration | 4310 | * cur_ld_moved - load moved in current iteration |
@@ -4312,7 +4312,7 @@ more_balance: | |||
4312 | */ | 4312 | */ |
4313 | cur_ld_moved = move_tasks(&env); | 4313 | cur_ld_moved = move_tasks(&env); |
4314 | ld_moved += cur_ld_moved; | 4314 | ld_moved += cur_ld_moved; |
4315 | double_rq_unlock(this_rq, busiest); | 4315 | double_rq_unlock(env.dst_rq, busiest); |
4316 | local_irq_restore(flags); | 4316 | local_irq_restore(flags); |
4317 | 4317 | ||
4318 | if (env.flags & LBF_NEED_BREAK) { | 4318 | if (env.flags & LBF_NEED_BREAK) { |
@@ -4348,8 +4348,7 @@ more_balance: | |||
4348 | if ((env.flags & LBF_SOME_PINNED) && env.imbalance > 0 && | 4348 | if ((env.flags & LBF_SOME_PINNED) && env.imbalance > 0 && |
4349 | lb_iterations++ < max_lb_iterations) { | 4349 | lb_iterations++ < max_lb_iterations) { |
4350 | 4350 | ||
4351 | this_rq = cpu_rq(env.new_dst_cpu); | 4351 | env.dst_rq = cpu_rq(env.new_dst_cpu); |
4352 | env.dst_rq = this_rq; | ||
4353 | env.dst_cpu = env.new_dst_cpu; | 4352 | env.dst_cpu = env.new_dst_cpu; |
4354 | env.flags &= ~LBF_SOME_PINNED; | 4353 | env.flags &= ~LBF_SOME_PINNED; |
4355 | env.loop = 0; | 4354 | env.loop = 0; |