rapl-energy 0.1.19

Small library for getting the CPU energy consumption from RAPL
docs.rs failed to build rapl-energy-0.1.19
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: rapl-energy-0.1.8

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