LIBPFM(3)

πŸ’– LIBPFM(3) β€” the libpfm_intel_skx_unc_upi page, but make it make sense πŸ’–

okay bestie, so this is a page from the Linux Programmer's Manual (yes, that's the manual name, we're being official for like two seconds) and it's literally all about libpfm_intel_skx_unc_upi β€” support for the Intel Skylake X Server UPI uncore PMU. ngl that's a mouthful, but we're gonna get through it together 🫢


✨ NAME ✨

libpfm_intel_skx_unc_upi β€” support for the Intel Skylake X Server UPI uncore PMU. that's it, that's the whole identity πŸ’…


🌸 SYNOPSIS 🌸

#include <perfmon/pfmlib.h>

PMU name: skx_unc_upi[0-2] PMU desc: Intel Skylake X Server UPI uncore PMU


πŸ¦‹ DESCRIPTION πŸ¦‹

so basically the library is out here supporting the Intel Skylake X Server UPI uncore PMU. that's the vibe. that's what it does. iconic, honestly ✨


πŸ’… MODIFIERS πŸ’…

these are the modifiers you can throw at the Intel Skylake X server UPI uncore PMU, and yes every single one matters, don't skip:

  • e β€” enable edge detection, meaning you only count when there's a state transition from zero occurrences of the event to at least one occurrence. heads up though: you must pair this with a threshold modifier (t) that has a value greater than or equal to one. it's a boolean modifier, no cap.
  • t β€” set the threshold value. when you set it to something non-zero, the counter counts the number of QPI cycles where the number of occurrences of the event is greater than or equal to the threshold. it's an integer modifier, and the valid values live in the range [0:255]. pick wisely bestie 🌈
  • i β€” invert the meaning of the threshold or edge filter. if it's set, the event counts when strictly less than N occurrences happen per cycle (where threshold is set to N). when invert is set, threshold has to be set to a non-zero value, fr fr. 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 for those keeping score. boolean modifier, naturally πŸ’œ

πŸŽ€ BASIC_HDR_MATCH events πŸŽ€

the library is also out here supporting the special RXL_BASIC_HDR_MATCH and TXL_BASIC_HDR_MATCH opcode matcher events. these ones ate, because they have so many more filters available β€” either as a modifier (listed below, don't worry) or as specific umasks.

on top of all the standard modifiers listed above ☝️, these extra ones are available too:

  • rcsnid β€” specify a RCS Node identifier, as an integer in the range [0-15]. Default: 0 πŸ“
  • dnid β€” specify a destination Node identifier, as an integer in the range [0-15]. Default: 0 πŸ“

πŸ‘‘ AUTHORS πŸ‘‘

Stephane Eranian <eranian@gmail.com> β€” the main character who wrote this, we love them πŸ’–


lowkey reminder: this whole page is LIBPFM(3), so if you're lost, you're in the right place bestie 🧚

and that's the whole page, no notes πŸ’€βœ¨ this was written back in January, 2018 and it's still sitting pretty under the LIBPFM(3) footer, so if you ever forget where you read it, iykyk. mwah, go count some QPI cycles πŸ«ΆπŸ’…

πŸ“¦ where this page comes from