From: Hemanth Selam <hemanth.selam@gmail.com>
To: Shuah Khan <shuah@kernel.org>, Thomas Renninger <trenn@suse.com>
Cc: Shuah Khan <skhan@linuxfoundation.org>,
"John B. Wyatt IV" <jwyatt@redhat.com>,
John Kacur <jkacur@redhat.com>,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH v2] cpupower: monitor: Show how a counter value is exported
Date: Mon, 7 Sep 2026 17:37:17 +0530 [thread overview]
Message-ID: <20260907120717.35503-1-hemanth.selam@gmail.com> (raw)
"cpupower monitor -l" lists the name, the processor hierarchy level and
a description of every counter, but not how its value is exported. Some
counters are a percentage of the time spent in a state, others are
absolute values with their own unit, for example the Mperf "Freq"
counter reports MHz and the RAPL zones report micro Joule. Both cannot
be told apart from the listing.
Show the value type behind the hierarchy level and document it:
[%] The counter is a percentage of the time spent in the state.
[abs] The counter is an absolute value, its unit depends on the
counter, MHz for "Freq" or micro Joule for a RAPL zone.
Before:
$ cpupower monitor -l
Monitor "Mperf" (3 states) - Might overflow after 922000000 s
C0 [T] -> Processor Core not idle
Cx [T] -> Processor Core in an idle state
Freq [T] -> Average Frequency (including boost) in MHz
After:
$ cpupower monitor -l
Monitor "Mperf" (3 states) - Might overflow after 922000000 s
C0 [T] [%] -> Processor Core not idle
Cx [T] [%] -> Processor Core in an idle state
Freq [T] [abs] -> Average Frequency (including boost) in MHz
The check mirrors the one print_results() already makes when it decides
how to read a counter, so no new helper is needed.
The time granularity part of the ToDo needs a new cstate_t member every
monitor has to fill in, keep it noted.
Assisted-by: Cursor:claude-opus-5
Signed-off-by: Hemanth Selam <hemanth.selam@gmail.com>
---
Notes:
Changes since v1:
- drop the value_abbr() helper and check s.get_count_percent inline at
the printf, as Shuah Khan asked; it matches what print_results()
already does a few lines above
tools/power/cpupower/man/cpupower-monitor.1 | 8 ++++++++
.../power/cpupower/utils/idle_monitor/cpupower-monitor.c | 9 ++++++---
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/tools/power/cpupower/man/cpupower-monitor.1 b/tools/power/cpupower/man/cpupower-monitor.1
index 89af019f8dc4..c8008919627c 100644
--- a/tools/power/cpupower/man/cpupower-monitor.1
+++ b/tools/power/cpupower/man/cpupower-monitor.1
@@ -51,6 +51,14 @@ coverage in square brackets:
.IP \(bu
[M] \-> Machine/Platform wide counter
.RE
+.IP \(bu
+How the counter is exported, in square brackets behind the hierarchy level:
+.RS 4
+.IP \(bu
+[%] \-> Percentage of the time spent in the state
+.IP \(bu
+[abs] \-> Absolute value, the unit depends on the counter
+.RE
.RE
.RE
.PP
diff --git a/tools/power/cpupower/utils/idle_monitor/cpupower-monitor.c b/tools/power/cpupower/utils/idle_monitor/cpupower-monitor.c
index e8b3841d5c0f..df00e82eb820 100644
--- a/tools/power/cpupower/utils/idle_monitor/cpupower-monitor.c
+++ b/tools/power/cpupower/utils/idle_monitor/cpupower-monitor.c
@@ -284,10 +284,13 @@ void list_monitors(void)
for (state = 0; state < monitors[mon]->hw_states_num; state++) {
s = monitors[mon]->hw_states[state];
/*
- * ToDo show more state capabilities:
- * percent, time (granlarity)
+ * ToDo show the time granularity of a counter, this
+ * needs a new cstate_t member every monitor has to
+ * fill in.
*/
- printf("%s\t[%c] -> %s\n", s.name, range_abbr[s.range],
+ printf("%s\t[%c] [%s] -> %s\n", s.name,
+ range_abbr[s.range],
+ s.get_count_percent ? "%" : "abs",
gettext(s.desc));
}
}
--
2.48.1
reply other threads:[~2026-09-07 12:07 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260907120717.35503-1-hemanth.selam@gmail.com \
--to=hemanth.selam@gmail.com \
--cc=jkacur@redhat.com \
--cc=jwyatt@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=shuah@kernel.org \
--cc=skhan@linuxfoundation.org \
--cc=trenn@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox