#energy #benchmarking #sustainability

rapl-energy

Small library for getting the CPU energy consumption from RAPL

10 releases

0.1.9 Jul 24, 2024
0.1.8 Jul 23, 2024
0.1.2 Jun 26, 2024

#213 in Profiling

Apache-2.0

16KB
369 lines

Rapl Energy

Small library for getting the CPU energy consumption from RAPL and friends.

This project is very much still a work in progress, and is mainly intended for internal use. However I share it here should it be useful to anyone.

RAPL permissions

Reading RAPL requires elevated permissions.

I suggest adding a new rapl group.

sudo addgroup rapl
sudo usermod -aG rapl $(whoami)

And then adding the necessary entries to /etc/sysfs.conf. (Requires sysfsutils to be installed.)

mode class/powercap/intel-rapl:0/energy_uj = 0440
owner class/powercap/intel-rapl:0/energy_uj = root:rapl
mode class/powercap/intel-rapl:0:0/energy_uj = 0440
owner class/powercap/intel-rapl:0:0/energy_uj = root:rapl

MSR permissions

Reading model-specific registers (MSR) requires elevated permissions.

sudo apt install msr-tools

You might need to run modprobe as well.

modprobe msr

One can then print the accumulated energy value as follows. (Where -a prints all CPUs, and -u prints the value as an unsigned decimal.)

sudo rdmsr 0xC001029A -au

It seems that the executable must be run with sudo though. I still need to figure out if perhaps this can be done instead with a group.

sudo ./target/debug/examples/amd

MSR group

It might be useful to create a group for MSR. Sadly this does not resolve the above issue however.

sudo groupadd msr
sudo chgrp msr /dev/cpu/*/msr
sudo chmod g+rw /dev/cpu/*/msr
sudo usermod -aG msr $(whoami)
newgrp msr

Dependencies

~0.8–2.7MB
~45K SLoC