Re: [RFC PATCH v3 0/5] Introduce Cpufreq Active Stats

From: Lukasz Luba
Date: Tue Apr 26 2022 - 03:47:04 EST

On 4/26/22 04:11, Viresh Kumar wrote:
On 06-04-22, 23:08, Lukasz Luba wrote:
Hi all,

This is the 3rd version of patch set which tries to address issues which are
due to missing proper information about CPU performance in time.

The issue description:
1. "Cpufreq statistics cover the time when CPUs are in idle states, so they
are not suitable for certain purposes, like thermal control." Rafael [2]
2. Thermal governor Intelligent Power Allocation (IPA) has to estimate power,
for the last period, e.g. 100ms, for each CPU in the Cluster, to grant new
power and set max possible frequency. Currently in some cases it gets big
error, when the frequency of CPU changed in the middle. It is due to the
fact that IPA reads the current frequency for the CPU, not aware of all
other frequencies which were actively (not in idle) used in the last 100ms.

This code focuses on tracking the events of idle entry/exit for each CPU
and combine them with the frequency tracked statistics inside internal
statistics arrays (per-CPU). In the old cpufreq stats we have one shared
statistics array for the policy (all CPUs) and not take into account
periods when each CPU was in idle.

Sometimes the IPA error between old estimation signal and reality is quite
big (>50%).

It would have been useful to show how the stats hierarchy looks in userspace

I haven't modify your current cpufreq stats, they are still counting
total time (idle + running) for the given frequency. I think this is
still useful for some userspace tools. These new proposed stats don't
have such sysfs interface to read them. I don't know if userspace would
be interested in this information (the running only time). IIRC Android
uses bpf mechanisms to get this information to the userspace.