Message ID | 20240809083728.266697-1-aboorvad@linux.ibm.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Shuah Khan |
Headers | show |
Series | [1/1] tools/cpupower: display residency value in idle-info | expand |
On 8/9/24 02:37, Aboorva Devarajan wrote: > Update cpuidle tool to display the residency value of cpuidle > states. This addition provides a clearer and more detailed view > of idle state information when using cpuidle-info. > > -------------------------------- > Before Patch: > -------------------------------- > $ cpupower idle-info > CPUidle driver: intel_idle > CPUidle governor: menu > analyzing CPU 28: > > Number of idle states: 3 > Available idle states: POLL C1 C1E > POLL: > Flags/Description: CPUIDLE CORE POLL IDLE > Latency: 0 > Usage: 7448 > Duration: 207170 > C1: > Flags/Description: MWAIT 0x00 > Latency: 2 > Usage: 7023 > Duration: 3736853 > C1E: > Flags/Description: MWAIT 0x01 > Latency: 10 > Usage: 18468 > Duration: 11396212 > > -------------------------------- > After Patch: > -------------------------------- > $ cpupower idle-info > CPUidle driver: intel_idle > CPUidle governor: menu > analyzing CPU 12: > > Number of idle states: 3 > Available idle states: POLL C1 C1E > POLL: > Flags/Description: CPUIDLE CORE POLL IDLE > Latency: 0 > Residency: 0 > Usage: 1950 > Duration: 38458 > C1: > Flags/Description: MWAIT 0x00 > Latency: 2 > Residency: 2 > Usage: 10688 > Duration: 7133020 > C1E: > Flags/Description: MWAIT 0x01 > Latency: 10 > Residency: 20 > Usage: 22356 > Duration: 15687259 > -------------------------------- > > Signed-off-by: Aboorva Devarajan <aboorvad@linux.ibm.com> > --- > tools/power/cpupower/lib/cpuidle.c | 8 ++++++++ > tools/power/cpupower/lib/cpuidle.h | 2 ++ > tools/power/cpupower/utils/cpuidle-info.c | 4 ++++ > 3 files changed, 14 insertions(+) > Thank you for the patch. Applied for Linux 6.12 to https://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux.git/log/?h=cpupower I will send this in my PR to Rafael. thanks, -- Shuah
diff --git a/tools/power/cpupower/lib/cpuidle.c b/tools/power/cpupower/lib/cpuidle.c index 479c5971aa6d..0ecac009273c 100644 --- a/tools/power/cpupower/lib/cpuidle.c +++ b/tools/power/cpupower/lib/cpuidle.c @@ -116,6 +116,7 @@ enum idlestate_value { IDLESTATE_USAGE, IDLESTATE_POWER, IDLESTATE_LATENCY, + IDLESTATE_RESIDENCY, IDLESTATE_TIME, IDLESTATE_DISABLE, MAX_IDLESTATE_VALUE_FILES @@ -125,6 +126,7 @@ static const char *idlestate_value_files[MAX_IDLESTATE_VALUE_FILES] = { [IDLESTATE_USAGE] = "usage", [IDLESTATE_POWER] = "power", [IDLESTATE_LATENCY] = "latency", + [IDLESTATE_RESIDENCY] = "residency", [IDLESTATE_TIME] = "time", [IDLESTATE_DISABLE] = "disable", }; @@ -254,6 +256,12 @@ unsigned long cpuidle_state_latency(unsigned int cpu, return cpuidle_state_get_one_value(cpu, idlestate, IDLESTATE_LATENCY); } +unsigned long cpuidle_state_residency(unsigned int cpu, + unsigned int idlestate) +{ + return cpuidle_state_get_one_value(cpu, idlestate, IDLESTATE_RESIDENCY); +} + unsigned long cpuidle_state_usage(unsigned int cpu, unsigned int idlestate) { diff --git a/tools/power/cpupower/lib/cpuidle.h b/tools/power/cpupower/lib/cpuidle.h index 2e10fead2e1e..2ab404d40259 100644 --- a/tools/power/cpupower/lib/cpuidle.h +++ b/tools/power/cpupower/lib/cpuidle.h @@ -8,6 +8,8 @@ int cpuidle_state_disable(unsigned int cpu, unsigned int idlestate, unsigned int disable); unsigned long cpuidle_state_latency(unsigned int cpu, unsigned int idlestate); +unsigned long cpuidle_state_residency(unsigned int cpu, + unsigned int idlestate); unsigned long cpuidle_state_usage(unsigned int cpu, unsigned int idlestate); unsigned long long cpuidle_state_time(unsigned int cpu, diff --git a/tools/power/cpupower/utils/cpuidle-info.c b/tools/power/cpupower/utils/cpuidle-info.c index 44126a87fa7a..e0d17f0de3fe 100644 --- a/tools/power/cpupower/utils/cpuidle-info.c +++ b/tools/power/cpupower/utils/cpuidle-info.c @@ -64,6 +64,8 @@ static void cpuidle_cpu_output(unsigned int cpu, int verbose) printf(_("Latency: %lu\n"), cpuidle_state_latency(cpu, idlestate)); + printf(_("Residency: %lu\n"), + cpuidle_state_residency(cpu, idlestate)); printf(_("Usage: %lu\n"), cpuidle_state_usage(cpu, idlestate)); printf(_("Duration: %llu\n"), @@ -115,6 +117,8 @@ static void proc_cpuidle_cpu_output(unsigned int cpu) printf(_("promotion[--] demotion[--] ")); printf(_("latency[%03lu] "), cpuidle_state_latency(cpu, cstate)); + printf(_("residency[%05lu] "), + cpuidle_state_residency(cpu, cstate)); printf(_("usage[%08lu] "), cpuidle_state_usage(cpu, cstate)); printf(_("duration[%020Lu] \n"),
Update cpuidle tool to display the residency value of cpuidle states. This addition provides a clearer and more detailed view of idle state information when using cpuidle-info. -------------------------------- Before Patch: -------------------------------- $ cpupower idle-info CPUidle driver: intel_idle CPUidle governor: menu analyzing CPU 28: Number of idle states: 3 Available idle states: POLL C1 C1E POLL: Flags/Description: CPUIDLE CORE POLL IDLE Latency: 0 Usage: 7448 Duration: 207170 C1: Flags/Description: MWAIT 0x00 Latency: 2 Usage: 7023 Duration: 3736853 C1E: Flags/Description: MWAIT 0x01 Latency: 10 Usage: 18468 Duration: 11396212 -------------------------------- After Patch: -------------------------------- $ cpupower idle-info CPUidle driver: intel_idle CPUidle governor: menu analyzing CPU 12: Number of idle states: 3 Available idle states: POLL C1 C1E POLL: Flags/Description: CPUIDLE CORE POLL IDLE Latency: 0 Residency: 0 Usage: 1950 Duration: 38458 C1: Flags/Description: MWAIT 0x00 Latency: 2 Residency: 2 Usage: 10688 Duration: 7133020 C1E: Flags/Description: MWAIT 0x01 Latency: 10 Residency: 20 Usage: 22356 Duration: 15687259 -------------------------------- Signed-off-by: Aboorva Devarajan <aboorvad@linux.ibm.com> --- tools/power/cpupower/lib/cpuidle.c | 8 ++++++++ tools/power/cpupower/lib/cpuidle.h | 2 ++ tools/power/cpupower/utils/cpuidle-info.c | 4 ++++ 3 files changed, 14 insertions(+)