Patch "sched/fair: Fix imbalance overflow" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    sched/fair: Fix imbalance overflow

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     sched-fair-fix-imbalance-overflow.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 2efaa3a226e2c319ec1627d980e235a3296dddb6
Author: Vincent Guittot <vincent.guittot@xxxxxxxxxx>
Date:   Tue Apr 11 11:06:11 2023 +0200

    sched/fair: Fix imbalance overflow
    
    [ 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@xxxxxxxxx>
    Signed-off-by: Vincent Guittot <vincent.guittot@xxxxxxxxxx>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
    Tested-by: Tingjia Cao <tjcao980311@xxxxxxxxx>
    Link: https://lore.kernel.org/lkml/CABcWv9_DAhVBOq2=W=2ypKE9dKM5s2DvoV8-U0+GDwwuKZ89jQ@xxxxxxxxxxxxxx/T/
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 024d18d85526d..7ac00dede846c 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -9647,6 +9647,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;
+		}
+
 	}
 
 	/*



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux