cpupower: Introduce powercap intel-rapl library and powercap-info command
authorThomas Renninger <trenn@suse.de>
Wed, 23 Nov 2022 11:18:09 +0000 (12:18 +0100)
committerShuah Khan <skhan@linuxfoundation.org>
Wed, 30 Nov 2022 23:48:28 +0000 (16:48 -0700)
commitc2294c1496b7169d5b14c2fa27526ba35da9f5ac
tree0493aaa88432687f08682f5afd65b563cb8d7e12
parent4680b734e7291cd804c4ea2c377935a2332366b1
cpupower: Introduce powercap intel-rapl library and powercap-info command

Read out powercap zone information via:
cpupower powercap-info
and show the zone hierarchy to the user:

./cpupower powercap-info
Driver: intel-rapl
Powercap domain hierarchy:

Zone: package-0 (enabled)
Power consumption can be monitored in micro Watts

        Zone: core (disabled)
        Power consumption can be monitored in micro Watts

        Zone: uncore (disabled)
        Power consumption can be monitored in micro Watts

        Zone: dram (disabled)
        Power consumption can be monitored in micro Watts

There is a dummy -a option for powercap-info which can/should be used to
show more detailed info later. Like that other args can be added easily
later as well.

A enable/disable option via powercap-set subcommand is also an enhancement
for later.

Also not all RAPL domains are shown. The func walking through RAPL
subdomains is restricted and hardcoded to: "intel-rapl/intel-rapl:0"
On my system above powercap domains map to:
intel-rapl/intel-rapl:0
-> pack (age-0)
intel-rapl/intel-rapl:0/intel-rapl:0:0
-> core
intel-rapl/intel-rapl:0/intel-rapl:0:1
-> uncore

Missing ones on my system are:
intel-rapl-mmio/intel-rapl-mmio:0
-> pack (age-0)

intel-rapl/intel-rapl:1
-> psys

This could get enhanced in:
struct powercap_zone *powercap_init_zones()
and adopted to walk through all intel-rapl zones, but
also to other powercap drivers like dtpm
(Dynamic Thermal Power Management framework),
cmp with: drivers/powercap/dtpm_*

Signed-off-by: Thomas Renninger <trenn@suse.de>
CC: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
tools/power/cpupower/Makefile
tools/power/cpupower/lib/powercap.c [new file with mode: 0644]
tools/power/cpupower/lib/powercap.h [new file with mode: 0644]
tools/power/cpupower/man/cpupower-powercap-info.1 [new file with mode: 0644]
tools/power/cpupower/utils/builtin.h
tools/power/cpupower/utils/cpupower.c
tools/power/cpupower/utils/powercap-info.c [new file with mode: 0644]