|
@@ -7067,9 +7067,11 @@ static inline void calculate_imbalance(struct lb_env *env, struct sd_lb_stats *s
|
|
if (busiest->group_type == group_overloaded &&
|
|
if (busiest->group_type == group_overloaded &&
|
|
local->group_type == group_overloaded) {
|
|
local->group_type == group_overloaded) {
|
|
load_above_capacity = busiest->sum_nr_running * SCHED_CAPACITY_SCALE;
|
|
load_above_capacity = busiest->sum_nr_running * SCHED_CAPACITY_SCALE;
|
|
- if (load_above_capacity > busiest->group_capacity)
|
|
|
|
|
|
+ if (load_above_capacity > busiest->group_capacity) {
|
|
load_above_capacity -= busiest->group_capacity;
|
|
load_above_capacity -= busiest->group_capacity;
|
|
- else
|
|
|
|
|
|
+ load_above_capacity *= NICE_0_LOAD;
|
|
|
|
+ load_above_capacity /= busiest->group_capacity;
|
|
|
|
+ } else
|
|
load_above_capacity = ~0UL;
|
|
load_above_capacity = ~0UL;
|
|
}
|
|
}
|
|
|
|
|