Re: [RFC PATCH 2/4] cpuidle: Add Active Stats calls tracking idle entry/exit

From: Lukasz Luba
Date: Tue Jun 22 2021 - 09:59:03 EST




On 6/22/21 1:33 PM, Rafael J. Wysocki wrote:
On Tue, Jun 22, 2021 at 9:59 AM Lukasz Luba <lukasz.luba@xxxxxxx> wrote:

The Active Stats framework tracks and accounts the activity of the CPU
for each performance level. It accounts the real residency,

No, it doesn't. It just measures the time between the entry and exit
and that's not the real residency (because it doesn't take the exit
latency into account, for example).

It's 'just' a 'model' and as other models has limitations, but it's
better than existing one, which IPA has to use:
cpu_util + currect_freq_at_sampling_time


when the CPU was not idle, at a given performance level. This patch adds needed calls
which provide the CPU idle entry/exit events to the Active Stats
framework.

And it adds overhead to overhead-sensitive code.

AFAICS, some users of that code will not really get the benefit, so
adding the overhead to it is questionable.

First, why is the existing instrumentation in the idle loop insufficient?

The instrumentation (tracing) cannot be used at run time AFAIK. I need
this idle + freq information combined in a running platform, not for
post-processing (like we have in LISA). The thermal governor IPA would
use them for used power estimation.


Second, why do you need to add locking to this code?

The idle entry/exit updates the CPU's accounting data structure.
There is a reader of those data structures: thermal governor,
run from different CPU, which is the reason why I put locking for them.