Re: [RFC PATCH] sched: Add scx_cpuperf_target in sched_cpu_util()
From: Peter Zijlstra
Date: Wed Mar 18 2026 - 08:50:32 EST
On Wed, Mar 18, 2026 at 08:17:55PM +0800, Xuewen Yan wrote:
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index bf948db905ed..20adb6fede2a 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -8198,7 +8198,12 @@ unsigned long effective_cpu_util(int cpu, unsigned long util_cfs,
>
> unsigned long sched_cpu_util(int cpu)
> {
> - return effective_cpu_util(cpu, cpu_util_cfs(cpu), NULL, NULL);
> + unsigned long util = scx_cpuperf_target(cpu);
> +
> + if (!scx_switched_all())
> + util += cpu_util_cfs(cpu);
> +
> + return effective_cpu_util(cpu, util, NULL, NULL);
> }
This puts the common case of no ext muck into the slow path of that
static_branch.
This wants to be something like:
unsigned long sched_cpu_util(int cpu)
{
unsigned long util = cpu_util_cfs(cpu);
if (scx_enabled()) {
unsigned long scx_util = scx_cpuperf_target(cpu);
if (!scx_switched_all())
scx_util += util;
util = scx_util;
}
return effective_cpu_util(cpu, util, NULL, NULL);
}