[PATCH v2 10/13] sched/fair: Disable util_est when rampup_multiplier is 0
From: Qais Yousef
Date: Sun May 03 2026 - 22:04:11 EST
util_est is a great feature to enable busy tasks with long sleep time to
maintain their perf level. But it can also be expensive in terms of
power for tasks that have no such perf requirements and just happened to
be busy in the last activation.
If a task sets its rampup_multiplier to 0, then it indicates that it is
happy to glide along with system default response and doesn't require
responsiveness. We can use that to further imply that the task is happy
to decay its util for long sleep too and disable util_est.
The behavior can be controlled via UTIL_EST_RAMPUP_ZERO sched_feat that
is enabled by default.
Signed-off-by: Qais Yousef <qyousef@xxxxxxxxxxx>
---
kernel/sched/fair.c | 8 ++++++++
kernel/sched/features.h | 5 +++++
2 files changed, 13 insertions(+)
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 8124bcc602d3..a36d6abaf6d2 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -5104,6 +5104,14 @@ static inline void util_est_update(struct cfs_rq *cfs_rq,
if (!sched_feat(UTIL_EST))
return;
+ /*
+ * rampup_multiplier = 0 indicates util_est is disabled.
+ */
+ if (sched_feat(UTIL_EST_RAMPUP_ZERO) && !p->sched_qos.rampup_multiplier) {
+ ewma = 0;
+ goto done;
+ }
+
/* Get current estimate of utilization */
ewma = READ_ONCE(p->se.avg.util_est);
diff --git a/kernel/sched/features.h b/kernel/sched/features.h
index 6f7e5bba854f..05eed37a9064 100644
--- a/kernel/sched/features.h
+++ b/kernel/sched/features.h
@@ -122,6 +122,11 @@ SCHED_FEAT(WA_BIAS, true)
*/
SCHED_FEAT(UTIL_EST, true)
+/*
+ * Disable util_est when rampup_multiplier is 0.
+ */
+SCHED_FEAT(UTIL_EST_RAMPUP_ZERO, true)
+
SCHED_FEAT(LATENCY_WARN, false)
/*
--
2.34.1