Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8e9d3d07 authored by Quentin Perret's avatar Quentin Perret
Browse files

ANDROID: sched/fair: Cap transient util in stune



boosted_cpu_util() sums the CFS and RT util signals before they are used
for frequency selection. While the util_avg signals are in sync,
util_est prevents cpu_util_cfs() from decreasing when a CFS task is
preempted by RT.

This util_est behaviour is beneficial in many scenarios, but it can
cause the sum of rt_util and cfs_util to go above SCHED_CAPACITY_SCALE.
Although benign, this transient value appears in the stune tracepoints,
and can cause confusion.

Work around the problem by capping the util sum to SCHED_CAPACITY_SCALE.

Bug: 120440300
Change-Id: I2be6eb157af86024e52ae11715f5637c77b201a3
Signed-off-by: default avatarQuentin Perret <quentin.perret@arm.com>
parent b1e96f16
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -5922,7 +5922,8 @@ schedtune_task_margin(struct task_struct *task)
unsigned long
boosted_cpu_util(int cpu, unsigned long other_util)
{
	unsigned long util = cpu_util_cfs(cpu_rq(cpu)) + other_util;
	unsigned long util = min_t(unsigned long, SCHED_CAPACITY_SCALE,
				   cpu_util_cfs(cpu_rq(cpu)) + other_util);
	long margin = schedtune_cpu_margin(util, cpu);

	trace_sched_boost_cpu(cpu, util, margin);