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: Vincent Guittot <vincent.guittot@linaro.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Tested-by: Lukasz Luba <lukasz.luba@arm.com>
Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
Reviewed-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Reviewed-by: Hongyan Xia <hongyan.xia2@arm.com>
Reviewed-by: Tang Yizhou <yizhou.tang@shopee.com>
Reviewed-by: Yanteng Si <siyanteng@loongson.cn> [for the Chinese translation]
Reviewed-by: Alex Shi <alexs@kernel.org>
Link: https://lore.kernel.org/r/20231201161652.1241695-2-vincent.guittot@linaro.org
This commit is contained in:
Vincent Guittot 2023-12-01 17:16:51 +01:00 committed by Ingo Molnar
parent 1f023007f5
commit 7736ae5572
4 changed files with 9 additions and 14 deletions

View file

@ -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
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:

View file

@ -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 ResponseIIR的EWMA“运行”值在出队时是最高的。 Infinite Impulse ResponseIIR的EWMA“运行”值在出队时是最高的。
另一个默认使能的编译选项UTIL_EST_FASTUP修改了IIR滤波器使其允许立即增加 UTIL_EST滤波使其在遇到更高值时立刻增加而遇到低值时会缓慢衰减。
仅在利用率下降时衰减。
进一步,运行队列的(可运行任务的)利用率之和由下式计算: 进一步,运行队列的(可运行任务的)利用率之和由下式计算:

View file

@ -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;
}
} }
/* /*

View file

@ -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)