diff options
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index e3199df426e3..4d78aef4559d 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -4119,12 +4119,23 @@ find_busiest_queue(struct sched_group *group, enum cpu_idle_type idle, | |||
4119 | continue; | 4119 | continue; |
4120 | 4120 | ||
4121 | rq = cpu_rq(i); | 4121 | rq = cpu_rq(i); |
4122 | wl = weighted_cpuload(i) * SCHED_LOAD_SCALE; | 4122 | wl = weighted_cpuload(i); |
4123 | wl /= power; | ||
4124 | 4123 | ||
4124 | /* | ||
4125 | * When comparing with imbalance, use weighted_cpuload() | ||
4126 | * which is not scaled with the cpu power. | ||
4127 | */ | ||
4125 | if (capacity && rq->nr_running == 1 && wl > imbalance) | 4128 | if (capacity && rq->nr_running == 1 && wl > imbalance) |
4126 | continue; | 4129 | continue; |
4127 | 4130 | ||
4131 | /* | ||
4132 | * For the load comparisons with the other cpu's, consider | ||
4133 | * the weighted_cpuload() scaled with the cpu power, so that | ||
4134 | * the load can be moved away from the cpu that is potentially | ||
4135 | * running at a lower capacity. | ||
4136 | */ | ||
4137 | wl = (wl * SCHED_LOAD_SCALE) / power; | ||
4138 | |||
4128 | if (wl > max_load) { | 4139 | if (wl > max_load) { |
4129 | max_load = wl; | 4140 | max_load = wl; |
4130 | busiest = rq; | 4141 | busiest = rq; |