To monitor performance on Intel Skylake by observing emitted events, we seem to have 2 choices:
What are the subtle differences between the two? When to use which?
At first, I though that the first link is for core (rather than uncore) performance monitoring (I don't know if there is a term named "core performance monitoring"). But both links seem to be doing fairly similar stuff.
Currently, I am programming uncore PMONs via pwrite() syscall with the value of "eventSel" and "umask" of the event I want to measure, looking up those values from 2). Would programming performance counters be any different if I were to use 1)
Thanks and regards.
- The "Uncore performance monitoring reference manual" is the official guide to uncore performance monitoring interfaces and events.
- The model-specific sub-section of Chapter 19 of Volume 3 of the Intel Architectures Software Developers Manual is the official guide to core performance monitoring and events.
- In the ten years that I have been working with the performance counters on Intel processors, I never ran across https://perfmon-events.intel.com -- not sure what to think about it yet, but it appears to be limited to the core performance counters.
- I have found https://download.01.org/perfmon/ to be very useful for both core and uncore events:
- It seems to be easier for the Intel folks to update this version compared to the official documents,
- It includes many specific examples of the auxiliary MSR settings for the OFFCORE_RESPONSE events -- these are very helpful when trying to understand how these events work.
- It includes "experimental" lists of events -- these are also very helpful when trying to understand some of the event encodings that don't have adequate examples in the official documents.