projects
/
platform
/
kernel
/
linux-starfive.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
98c77ad
)
sched/fair: Fix imbalance overflow
author
Vincent Guittot
<vincent.guittot@linaro.org>
Tue, 11 Apr 2023 09:06:11 +0000
(11:06 +0200)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Thu, 20 Apr 2023 10:35:14 +0000
(12:35 +0200)
[ Upstream commit
91dcf1e8068e9a8823e419a7a34ff4341275fb70
]
When local group is fully busy but its average load is above system load,
computing the imbalance will overflow and local group is not the best
target for pulling this load.
Fixes:
0b0695f2b34a
("sched/fair: Rework load_balance()")
Reported-by: Tingjia Cao <tjcao980311@gmail.com>
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Tested-by: Tingjia Cao <tjcao980311@gmail.com>
Link:
https://lore.kernel.org/lkml/CABcWv9_DAhVBOq2=W=2ypKE9dKM5s2DvoV8-U0+GDwwuKZ89jQ@mail.gmail.com/T/
Signed-off-by: Sasha Levin <sashal@kernel.org>
kernel/sched/fair.c
patch
|
blob
|
history
diff --git
a/kernel/sched/fair.c
b/kernel/sched/fair.c
index
88821ab
..
ec2d913
100644
(file)
--- a/
kernel/sched/fair.c
+++ b/
kernel/sched/fair.c
@@
-10041,6
+10041,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;
+ }
+
}
/*