diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2023-04-16 20:33:43 +0300 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2023-04-16 20:33:43 +0300 |
commit | 6c538e1adbfc696ac4747fb10d63e704344f763d (patch) | |
tree | 9920ba5195d4cdca8aecf79e72f10ba7e477cb38 | |
parent | e623175f6418f5873b28ca91a88312843b2e0dab (diff) | |
parent | 91dcf1e8068e9a8823e419a7a34ff4341275fb70 (diff) | |
download | linux-6c538e1adbfc696ac4747fb10d63e704344f763d.tar.xz |
Merge tag 'sched_urgent_for_v6.3_rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull scheduler fix from Borislav Petkov:
- Do not pull tasks to the local scheduling group if its average load
is higher than the average system load
* tag 'sched_urgent_for_v6.3_rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
sched/fair: Fix imbalance overflow
-rw-r--r-- | kernel/sched/fair.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 6986ea31c984..5f6587d94c1d 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -10238,6 +10238,16 @@ static inline void calculate_imbalance(struct lb_env *env, struct sd_lb_stats *s sds->avg_load = (sds->total_load * SCHED_CAPACITY_SCALE) / sds->total_capacity; + + /* + * If the local group is more loaded than the average system + * load, don't try to pull any tasks. + */ + if (local->avg_load >= sds->avg_load) { + env->imbalance = 0; + return; + } + } /* |