Re: [RFC PATCH] sched: Add scx_cpuperf_target in sched_cpu_util()

From: Vincent Guittot

Date: Wed Mar 18 2026 - 08:56:59 EST


On Wed, 18 Mar 2026 at 13:47, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
>
> 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.

+1
I was about to same

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

also scx_cpuperf_target() does not reflect the utilization of the CPU
but the targeted perfromance level


>
> if (!scx_switched_all())
> scx_util += util;
>
> util = scx_util;
> }
>
> return effective_cpu_util(cpu, util, NULL, NULL);
> }