Re: [PATCH v3 1/3] sched/fair: allow disabling sched_balance_newidle with sched_relax_domain_level

From: Vincent Guittot
Date: Thu Apr 04 2024 - 11:10:54 EST


On Thu, 4 Apr 2024 at 16:14, Valentin Schneider <vschneid@xxxxxxxxxx> wrote:
>
> On 03/04/24 16:28, Vitalii Bursov wrote:
> > Change relax_domain_level checks so that it would be possible
> > to include or exclude all domains from newidle balancing.
> >
> > This matches the behavior described in the documentation:
> > -1 no request. use system default or follow request of others.
> > 0 no search.
> > 1 search siblings (hyperthreads in a core).
> >
> > "2" enables levels 0 and 1, level_max excludes the last (level_max)
> > level, and level_max+1 includes all levels.
> >
> > Fixes: 9ae7ab20b483 ("sched/topology: Don't set SD_BALANCE_WAKE on cpuset domain relax")
>
> Not that it matters too much, but wasn't the behaviour the same back then?
> i.e.
>
> if (request < sd->level)
> sd->flags &= ~(SD_BALANCE_WAKE|SD_BALANCE_NEWIDLE);
>
> So if relax_domain_level=0 we wouldn't clear the flags on e.g. SMT
> (level=0)

Yes, I have been too quick: this patch [2019] was quite "old" and the
last one which changes the condition so I assumed it was the culprit

>
> AFAICT the docs & the code have always been misaligned:
>
> 4d5f35533fb9 ("sched, cpuset: customize sched domains, docs") [2008]
> 1d3504fcf560 ("sched, cpuset: customize sched domains, core") [2008]
>
> History nitpicking aside, I think this makes sense, but existing users are
> going to get a surprise...
>