RAPL-INFO(1)

πŸ’– RAPL-INFO πŸ’–

okay bestie, gather round, we're talking about rapl-info β€” the little utility that gets RAPL configurations. That's Intel Running Average Power Limit, for the uninitiated. And yes, this is the rapl-info(1) manual page, we're doing this properly. 🫢


✨ NAME ✨

rapl-info β€” get RAPL configurations 🌸


✨ SYNOPSIS ✨

rapl-info [OPTION]...

✨ DESCRIPTION ✨

okay so first things first, no cap: this utility is deprecated, use powercap-info(1) instead. πŸ’€ Not me having to tell you this upfront but here we are.

It prints out Intel Running Average Power Limit (RAPL) configurations. Iconic behaviour honestly.

⚠️ Heads up bestie: the -p and -z options here are different from powercap-info(1). Do not get it twisted.

And the requirements, because she has standards πŸ’…:

  • An Intel processor (Sandy Bridge or newer)
  • Linux kernel 3.13 or newer, compiled with CONFIG_POWERCAP and CONFIG_INTEL_RAPL enabled
  • the intel_rapl kernel module to be loaded

✨ OPTIONS ✨

  • -h, --help β€” Prints out the help screen 🌈
  • -v, --verbose β€” Print errors when files are not available. Basically she stops being mysterious and tells you what's missing. πŸ‘€
  • -p, --zone=ZONE β€” The zone number (none by default; 0 by default if using -z/--subzone and/or -c/--constraint). Ending with a colon prevents output for subzones. E.g., for zone 0, but not subzones:
-p 0:
  • -p, --package=PACKAGE β€” Deprecated, use --zone instead. bestie she's retired πŸ’€
  • -z, --subzone=SUBZONE β€” The subzone number (none by default)
  • -c, --constraint=CONSTRAINT β€” The constraint number (none by default)

All remaining options below are mutually exclusive β€” pick ONE, you can't have them all, this isn't a buffet πŸ“:

  • -n, --nzones β€” Print the number of zones found, or the number of subzones found if -p/--zone is set

The following are zone-level arguments (-z/--subzone is optional):

  • -j, --z-energy β€” Print zone energy counter ⚑
  • -J, --z-max-energy-range β€” Print zone maximum energy counter range
  • -w, --z-power β€” Print zone current power
  • -W, --z-max-power-range β€” Print zone maximum current power range
  • -e, --z-enabled β€” Print zone enable/disabled status
  • -x, --z-name β€” Print zone name 🏷️

The following are constraint-level arguments and require -c/--constraint (-z/--subzone is optional):

  • -l, --c-power-limit β€” Print constraint power limit
  • -s, --c-time-window β€” Print constraint time window
  • -U, --c-max-power β€” Print constraint maximum allowed power
  • -u, --c-min-power β€” Print constraint minimum allowed power
  • -T, --c-max-time-window β€” Print constraint maximum allowed time window
  • -t, --c-min-time-window β€” Print constraint minimum allowed time window
  • -y, --c-name β€” Print constraint name πŸŽ€

✨ EXAMPLES ✨

Note that -p/--zone=0 is used by default when also specifying -z/--subzone and/or -c/--constraint, allowing for simpler commands on single-socket systems. So convenient, we love a shortcut. πŸ’…

  • rapl-info β€” Print all RAPL zones.
  • rapl-info -p 0 β€” Print only zone 0, which is usually named package-0.
  • rapl-info -p 0 -z 1 β€” Print zone 0, subzone 1, which is usually the uncore or dram subzone of package-0, depending on the system.
  • rapl-info -p 0 -c 1 β€” Print zone 0, constraint 1, which is usually the short_term constraint for package-0.
  • rapl-info -p 0 -j β€” Print the energy counter for zone 0, which is usually named package-0.
  • rapl-info -p 1 -z 0 -c 0 -l β€” Print the power limit for zone 1, subzone 0, constraint 0, which is usually the long_term constraint for the core subzone of package-1 (a multi-socket system).

✨ REMARKS ✨

Some fields are optional and will only be printed if they are available β€” unless -v/--verbose is set. If no zone/constraint-specific outputs are requested, all available zones and constraints will be shown. Give the people what they want. 🌈

The units, memorise them bestie:

  • Energy units: microjoules (uJ)
  • Power units: microwatts (uW)
  • Time units: microseconds (us)

✨ BUGS ✨

okay so listen. The following are behavioral quirks due to the kernel interface or abnormalities in some hardware. They are not bugs in rapl-info and should not be reported as such. She's innocent, periodt. πŸ™ˆ

  • Values returned by the kernel sometimes lose accuracy from the actual values stored in Model-Specific Registers due to integer rounding. For example, the kernel may return a time window value of 7812 us, when in fact the actual stored value is 7812.5 us. Writing back a value returned by the kernel, e.g., using rapl-set(1), may cause unexpected changes to its value due to these rounding problems. 😭
  • At the time of this writing, some features in the powercap interface are not supported by RAPL. The following options may result in ENOENT (No such file or directory) errors:
    • -w/--z-power
    • -W/--z-max-power-range
    • -u/--c-min-power
    • -T/--c-max-time-window
    • -t/--c-min-time-window
  • On some systems, the constraint max_power_uw file, e.g., constraint_0_max_power_uw, is known to receive an ENODATA (No data available) error from the kernel for subzones. So even though the file exists, a value may not be printed for it. The file said hi but gave nothing. πŸ’€
  • It is possible for packages on multi-socket systems to be indexed out of order by the kernel. For example, the package at index 0 (-p 0) could actually be named package-1 while the package at index 1 (-p 1) is named package-0. Chaos, honestly. Not our fault. 🫠
  • Report bugs upstream at <https://github.com/powercap/powercap> πŸ›

✨ FILES ✨

  • /sys/devices/virtual/powercap/intel-rapl/*
  • /sys/class/powercap/intel-rapl/*

✨ AUTHORS ✨

Connor Imes <connor.k.imes@gmail.com> πŸ‘‘


✨ SEE ALSO ✨

powercap-info(1), powercap-set(1), rapl-set(1) β€” go read these too bestie, iykyk πŸ¦‹


and that's the whole page!! this came from the powercap package, dated 2021-04-14, and honestly it ate. slay, stay powered, and go check your energy counters responsibly βœ¨πŸ’–πŸŽ€