Re: [PATCH] cpufreq: schedutil: Optimize operations with single max CPU capacity

From: Lukasz Luba
Date: Tue Dec 06 2022 - 05:30:11 EST




On 12/6/22 10:16, Viresh Kumar wrote:
On 06-12-22, 10:10, Lukasz Luba wrote:
The max CPU capacity is the same for all CPUs sharing frequency domain
and thus 'policy' object. There is a way to avoid heavy operations
in a loop for each CPU by leveraging this knowledge. Thus, simplify
the looping code in the sugov_next_freq_shared() and drop heavy
multiplications. Instead, use simple max() to get the highest utilization
from these CPUs. This is useful for platforms with many (4 or 6) little
CPUs.

The max CPU capacity must be fetched every time we are called, due to
difficulties during the policy setup, where we are not able to get the
normalized CPU capacity at the right time.

The stored value in sugov_policy::max is also than used in
sugov_iowait_apply() to calculate the right boost. Thus, that field is
useful to have in that sugov_policy struct.

Signed-off-by: Lukasz Luba <lukasz.luba@xxxxxxx>

Can you please divide this into two patches, one for just moving max
and one for looping optimization ? Else we may end up reverting
everything once again.


OK, I can do that. Thanks for having a look!