Commit 7736ae55 authored by Vincent Guittot's avatar Vincent Guittot Committed by Ingo Molnar

sched/fair: Remove SCHED_FEAT(UTIL_EST_FASTUP, true)

sched_feat(UTIL_EST_FASTUP) has been added to easily disable the feature
in order to check for possibly related regressions. After 3 years, it has
never been used and no regression has been reported. Let's remove it
and make fast increase a permanent behavior.
Signed-off-by: default avatarVincent Guittot <vincent.guittot@linaro.org>
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
Tested-by: default avatarLukasz Luba <lukasz.luba@arm.com>
Reviewed-by: default avatarLukasz Luba <lukasz.luba@arm.com>
Reviewed-by: default avatarDietmar Eggemann <dietmar.eggemann@arm.com>
Reviewed-by: default avatarHongyan Xia <hongyan.xia2@arm.com>
Reviewed-by: default avatarTang Yizhou <yizhou.tang@shopee.com>
Reviewed-by: Yanteng Si <siyanteng@loongson.cn> [for the Chinese translation]
Reviewed-by: default avatarAlex Shi <alexs@kernel.org>
Link: https://lore.kernel.org/r/20231201161652.1241695-2-vincent.guittot@linaro.org
parent 1f023007
...@@ -90,8 +90,8 @@ For more detail see: ...@@ -90,8 +90,8 @@ For more detail see:
- Documentation/scheduler/sched-capacity.rst:"1. CPU Capacity + 2. Task utilization" - Documentation/scheduler/sched-capacity.rst:"1. CPU Capacity + 2. Task utilization"
UTIL_EST / UTIL_EST_FASTUP UTIL_EST
========================== ========
Because periodic tasks have their averages decayed while they sleep, even Because periodic tasks have their averages decayed while they sleep, even
though when running their expected utilization will be the same, they suffer a though when running their expected utilization will be the same, they suffer a
...@@ -99,8 +99,7 @@ though when running their expected utilization will be the same, they suffer a ...@@ -99,8 +99,7 @@ though when running their expected utilization will be the same, they suffer a
To alleviate this (a default enabled option) UTIL_EST drives an Infinite To alleviate this (a default enabled option) UTIL_EST drives an Infinite
Impulse Response (IIR) EWMA with the 'running' value on dequeue -- when it is Impulse Response (IIR) EWMA with the 'running' value on dequeue -- when it is
highest. A further default enabled option UTIL_EST_FASTUP modifies the IIR highest. UTIL_EST filters to instantly increase and only decay on decrease.
filter to instantly increase and only decay on decrease.
A further runqueue wide sum (of runnable tasks) is maintained of: A further runqueue wide sum (of runnable tasks) is maintained of:
......
...@@ -89,16 +89,15 @@ r_cpu被定义为当前CPU的最高性能水平与系统中任何其它CPU的最 ...@@ -89,16 +89,15 @@ r_cpu被定义为当前CPU的最高性能水平与系统中任何其它CPU的最
- Documentation/translations/zh_CN/scheduler/sched-capacity.rst:"1. CPU Capacity + 2. Task utilization" - Documentation/translations/zh_CN/scheduler/sched-capacity.rst:"1. CPU Capacity + 2. Task utilization"
UTIL_EST / UTIL_EST_FASTUP UTIL_EST
========================== ========
由于周期性任务的平均数在睡眠时会衰减,而在运行时其预期利用率会和睡眠前相同, 由于周期性任务的平均数在睡眠时会衰减,而在运行时其预期利用率会和睡眠前相同,
因此它们在再次运行后会面临(DVFS)的上涨。 因此它们在再次运行后会面临(DVFS)的上涨。
为了缓解这个问题,(一个默认使能的编译选项)UTIL_EST驱动一个无限脉冲响应 为了缓解这个问题,(一个默认使能的编译选项)UTIL_EST驱动一个无限脉冲响应
(Infinite Impulse Response,IIR)的EWMA,“运行”值在出队时是最高的。 (Infinite Impulse Response,IIR)的EWMA,“运行”值在出队时是最高的。
另一个默认使能的编译选项UTIL_EST_FASTUP修改了IIR滤波器,使其允许立即增加, UTIL_EST滤波使其在遇到更高值时立刻增加,而遇到低值时会缓慢衰减。
仅在利用率下降时衰减。
进一步,运行队列的(可运行任务的)利用率之和由下式计算: 进一步,运行队列的(可运行任务的)利用率之和由下式计算:
......
...@@ -4870,11 +4870,9 @@ static inline void util_est_update(struct cfs_rq *cfs_rq, ...@@ -4870,11 +4870,9 @@ static inline void util_est_update(struct cfs_rq *cfs_rq,
* to smooth utilization decreases. * to smooth utilization decreases.
*/ */
ue.enqueued = task_util(p); ue.enqueued = task_util(p);
if (sched_feat(UTIL_EST_FASTUP)) { if (ue.ewma < ue.enqueued) {
if (ue.ewma < ue.enqueued) { ue.ewma = ue.enqueued;
ue.ewma = ue.enqueued; goto done;
goto done;
}
} }
/* /*
......
...@@ -83,7 +83,6 @@ SCHED_FEAT(WA_BIAS, true) ...@@ -83,7 +83,6 @@ SCHED_FEAT(WA_BIAS, true)
* UtilEstimation. Use estimated CPU utilization. * UtilEstimation. Use estimated CPU utilization.
*/ */
SCHED_FEAT(UTIL_EST, true) SCHED_FEAT(UTIL_EST, true)
SCHED_FEAT(UTIL_EST_FASTUP, true)
SCHED_FEAT(LATENCY_WARN, false) SCHED_FEAT(LATENCY_WARN, false)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment