Re: [PATCH] sched/fair: Use sched_energy_enabled()

From: Vincent Guittot

Date: Fri Mar 27 2026 - 12:46:42 EST


On Fri, 27 Mar 2026 at 17:18, K Prateek Nayak <kprateek.nayak@xxxxxxx> wrote:
>
> Hello Vincent,
>
> On 3/27/2026 6:50 PM, Vincent Guittot wrote:
> > Use helper sched_energy_enabled() everywhere we want to test if EAS is
> > enabled instead of mixing sched_energy_enabled() and direct call to
> > static_branch_unlikely().
> >
> > No functional change
> >
> > Signed-off-by: Vincent Guittot <vincent.guittot@xxxxxxxxxx>
>
> Feel free to include:
>
> Reviewed-by: K Prateek Nayak <kprateek.nayak@xxxxxxx>
> Tested-by: K Prateek Nayak <kprateek.nayak@xxxxxxx>
>
> > ---
> > kernel/sched/topology.c | 9 ++++-----
> > 1 file changed, 4 insertions(+), 5 deletions(-)
> >
> > diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c
> > index 43150591914b..5847b83d9d55 100644
> > --- a/kernel/sched/topology.c
> > +++ b/kernel/sched/topology.c
> > @@ -273,7 +273,7 @@ void rebuild_sched_domains_energy(void)
> > static int sched_energy_aware_handler(const struct ctl_table *table, int write,
> > void *buffer, size_t *lenp, loff_t *ppos)
> > {
> > - int ret, state;
> > + int ret;
> >
> > if (write && !capable(CAP_SYS_ADMIN))
> > return -EPERM;
> > @@ -289,8 +289,7 @@ static int sched_energy_aware_handler(const struct ctl_table *table, int write,
> >
> > ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
> > if (!ret && write) {
> > - state = static_branch_unlikely(&sched_energy_present);
> > - if (state != sysctl_sched_energy_aware)
> > + if (sysctl_sched_energy_aware != sched_energy_enabled())
>
> Quick tangential question:
>
> Since "sysctl_sched_energy_aware" is initialized to "1", if
> build_perf_domains() returns false at boot, sysctl_sched_energy_aware
> and sched_energy_enabled() will go out of sync and reading
> "/proc/sys/kernel/sched_energy_aware" will still show "1" despite EAS
> being disabled.
>
> Is that okay?

Isn't the call to sched_is_eas_possible() there to prevent this case ?

>
> Some sysctls like numa_balancing will show 0 if disabled (by user or
> due to lack of NUMA) reflecting the real state of system. Should
> sched_energy_aware do the same?
>
> > rebuild_sched_domains_energy();
> > }
> >
> --
> Thanks and Regards,
> Prateek