Re: [PATCH] sched/fair: Replace CFS internal cpu_util() with cpu_util_cfs()

From: Dietmar Eggemann
Date: Thu Nov 18 2021 - 11:17:22 EST


On 18.11.21 09:07, Vincent Guittot wrote:
> On Wed, 17 Nov 2021 at 18:26, Dietmar Eggemann <dietmar.eggemann@xxxxxxx> wrote:
>>
>> On 12.11.21 17:20, Vincent Guittot wrote:
>>> On Fri, 12 Nov 2021 at 15:14, Dietmar Eggemann <dietmar.eggemann@xxxxxxx> wrote:
>>>>
>>>> cpu_util_cfs() was created by commit d4edd662ac16 ("sched/cpufreq: Use
>>>> the DEADLINE utilization signal") to enable the access to CPU
>>>> utilization from the Schedutil CPUfreq governor.
>>>>
>>>> Commit a07630b8b2c1 ("sched/cpufreq/schedutil: Use util_est for OPP
>>>> selection") added util_est support later.
>>>>
>>>> The only thing cpu_util() is doing on top of what cpu_util_cfs() already
>>>> does is to clamp the return value to the [0..capacity_orig] capacity
>>>> range of the CPU. Integrating this into cpu_util_cfs() is not harming
>>>> the existing users (Schedutil and CPUfreq cooling (latter via
>>>> sched_cpu_util() wrapper)).
>>>
>>> Could you to update cpu_util_cfs() to use cpu as a parameter instead of rq ?
>>
>> I could but I decided to use use `struct rq *rq` instead.
>>
>> (A) We already know the rq in the following functions where we call
>> cpu_util_cfs():
>
> The only user of cpu_util_cfs() is sugov_get_util() and it does
> cpu_util_cfs(cpu_rq(sg_cpu->cpu)) because rq is only used as a
> parameter of cpu_util_cfs()

Sure, I guess there is another user currently: cpufreq_cooling

get_load() -> sched_cpu_util() ->
effective_cpu_util(..., cpu_util_cfs(cpu_rq(cpu)), ...)
^^^^^^^^^^^^^^^^^^^^^^^^^
>
> all other ones are using cpu_util() which already uses cpu as a
> parameter so it's more straight forward to keep using cpu

OK, will do it this way, just wanted to mention the possibility to save
some of these cpu_rq(cpu) calls.

[...]

>> /**
>> * cpu_util_cfs() - Estimates the amount of CPU capacity used by CFS tasks.
>> * @cpu: the CPU to get the utilization for.
>
> cpu is clearly the right parameter ;-)

Not very clever of me ;-)

[...]