Re: [PATCH v1] cpufreq: Add policy_frequency trace event
From: Christian Loehle <christian.loehle@arm.com>
Date: 2025-11-17 09:14:33
Also in:
linux-pm, lkml
On 11/14/25 05:11, Viresh Kumar wrote:
On 13-11-25, 19:41, Samuel Wu wrote:quoted
On Wed, Nov 12, 2025 at 10:45 PM Viresh Kumar [off-list ref] wrote:quoted
On 12-11-25, 15:51, Samuel Wu wrote:quoted
The existing cpu_frequency trace_event can be verbose, emitting an event for every CPU in the policy even when their frequencies are identical. This patch adds a new policy_frequency trace event, which provides a more efficient alternative to cpu_frequency trace event. This option allows users who only need frequency at a policy level more concise logs with simpler analysis. Signed-off-by: Samuel Wu <redacted> --- drivers/cpufreq/cpufreq.c | 2 ++ include/trace/events/power.h | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+)diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 4472bb1ec83c..b65534a4fd9a 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c@@ -345,6 +345,7 @@ static void cpufreq_notify_transition(struct cpufreq_policy *policy, pr_debug("FREQ: %u - CPUs: %*pbl\n", freqs->new, cpumask_pr_args(policy->cpus)); + trace_policy_frequency(freqs->new, policy->cpu); for_each_cpu(cpu, policy->cpus) trace_cpu_frequency(freqs->new, cpu);I don't see much value in almost duplicate trace events. If we feel that a per-policy event is a better fit (which makes sens), then we can just drop the trace_cpu_frequency() events and print policy->cpus (or related_cpus) information along with the per-policy events.Thank you for the feedback Viresh. Fair enough, I've done some testing and a single trace event should work and would be cleaner. Please let me know what you think of this proposal for v2. We can append a bitmask of policy->cpus field to trace_cpu_frequency(). This way we maintain backwards compatibility: trace_cpu_frequency() is not removed, and its pre-existing fields are not disturbed. Call flow wise, we can delete all the for_each_cpu() loops, and we still retain the benefits of the trace emitting once per policy instead of once per cpu.Fine by me. I have added Scheduler maintainers in the loop to see if they have a different view.
That's gonna break a lot of tooling but AFAICS that in and of itself isn't a good enough reason not to do it. (Added some CCs)