Patch "sched/uclamp: Ignore (util == 0) optimization in feec() when p_util_max = 0" 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/uclamp: Ignore (util == 0) optimization in feec() when p_util_max = 0

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-uclamp-ignore-util-0-optimization-in-feec-when.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 b9941c37b8c431cbc36a1690a001706f049d2841
Author: Qais Yousef <qyousef@xxxxxxxxxxx>
Date:   Sun Sep 17 00:29:54 2023 +0100

    sched/uclamp: Ignore (util == 0) optimization in feec() when p_util_max = 0
    
    [ Upstream commit 23c9519def98ee0fa97ea5871535e9b136f522fc ]
    
    find_energy_efficient_cpu() bails out early if effective util of the
    task is 0 as the delta at this point will be zero and there's nothing
    for EAS to do. When uclamp is being used, this could lead to wrong
    decisions when uclamp_max is set to 0. In this case the task is capped
    to performance point 0, but it is actually running and consuming energy
    and we can benefit from EAS energy calculations.
    
    Rework the condition so that it bails out when both util and uclamp_min
    are 0.
    
    We can do that without needing to use uclamp_task_util(); remove it.
    
    Fixes: d81304bc6193 ("sched/uclamp: Cater for uclamp in find_energy_efficient_cpu()'s early exit condition")
    Signed-off-by: Qais Yousef (Google) <qyousef@xxxxxxxxxxx>
    Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx>
    Reviewed-by: Vincent Guittot <vincent.guittot@xxxxxxxxxx>
    Reviewed-by: Dietmar Eggemann <dietmar.eggemann@xxxxxxx>
    Acked-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20230916232955.2099394-3-qyousef@xxxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 646a6ae4b2509..e9ea3244fa4d1 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -3987,22 +3987,6 @@ static inline unsigned long task_util_est(struct task_struct *p)
 	return max(task_util(p), _task_util_est(p));
 }
 
-#ifdef CONFIG_UCLAMP_TASK
-static inline unsigned long uclamp_task_util(struct task_struct *p,
-					     unsigned long uclamp_min,
-					     unsigned long uclamp_max)
-{
-	return clamp(task_util_est(p), uclamp_min, uclamp_max);
-}
-#else
-static inline unsigned long uclamp_task_util(struct task_struct *p,
-					     unsigned long uclamp_min,
-					     unsigned long uclamp_max)
-{
-	return task_util_est(p);
-}
-#endif
-
 static inline void util_est_enqueue(struct cfs_rq *cfs_rq,
 				    struct task_struct *p)
 {
@@ -7037,7 +7021,7 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu)
 	target = prev_cpu;
 
 	sync_entity_load_avg(&p->se);
-	if (!uclamp_task_util(p, p_util_min, p_util_max))
+	if (!task_util_est(p) && p_util_min == 0)
 		goto unlock;
 
 	for (; pd; pd = pd->next) {



[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