LIBPFM(3)

πŸ¦‹ LIBPFM(3) πŸ¦‹

okay bestie, so this is a page from the Linux Programmer's Manual, and it's literally the libpfm docs for one very specific little corner of Intel's world. come sit with me πŸ’–


🌸 NAME 🌸

libpfm_intel_skx_unc_pcu β€” the support page for the Intel Skylake X Power Controller Unit (PCU) uncore PMU. no cap, that's the whole name, that's the whole vibe.


✨ SYNOPSIS ✨

#include <perfmon/pfmlib.h>
  • PMU name: skx_unc_pcu
  • PMU desc: Intel Skylake X Server PCU uncore PMU

πŸ’… DESCRIPTION πŸ’…

so the library supports the Intel Skylake X Server Power Controller Unit uncore PMU. that's it, that's the tea πŸ«– β€” she does PCU uncore things, and now you know her name.


πŸŽ€ MODIFIERS πŸŽ€

these are the modifiers supported on the Intel Skylake X server PCU uncore PMU, and yes you're gonna want to know all of them:

  • e β€” turns on edge detection, meaning you only count when there's a state transition from no occurrence of the event to at least one occurrence. ⚠️ this modifier must be combined with a threshold modifier (t) whose value is greater than or equal to one. it's a boolean modifier, so it's on or it's off, no in-between.
  • t β€” sets the threshold value. when you set it to something non-zero, the counter counts the number of HA cycles in which the number of occurrences of the event is greater than or equal to the threshold. it's an integer modifier, and its values live in the range [0:15].
  • i β€” inverts the meaning of the threshold or the edge filter. if it's set, the event counts when strictly less than N occurrences happen per cycle, when the threshold is set to N. if invert is set, then threshold must be set to a non-zero value. and if edge detection is set, then setting this means the event counts when the event transitions from occurring to not occurring (that's a falling edge, iykyk). this is a boolean modifier.

🌈 Frequency band filtering 🌈

there are 3 events which support frequency band filtering, namely, UNC_P_FREQ_BAND0_CYCLES, UNC_P_FREQ_BAND1_CYCLES, UNC_P_FREQ_BAND2_CYCLES, UNC_P_FREQ_BAND3_CYCLES.

the frequency filter (available via the ff modifier) gets stored into a PMU shared register that holds all 4 possible frequency bands, one per event. but here's the thing bestie β€” the library generates the encoding for each event individually, because it processes events one at a time. so the caller, or the underlying kernel interface, may have to merge the band filter settings together to program the filter register properly. πŸ’€


🫢 AUTHORS 🫢

Stephane Eranian <eranian@gmail.com>


that's the whole page, you ate it πŸ’– ok bye, this was January, 2018 energy and you just read LIBPFM(3) β€” go forth and count some uncore events, bestie πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from