Software Tuning, Performance Optimization & Platform Monitoring
Discussion regarding monitoring and software tuning methodologies, Performance Monitoring Unit (PMU) of Intel microprocessors, and platform updating.

Performance Monitoring

New Contributor I



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.

0 Kudos
1 Reply
Black Belt
  1. The "Uncore performance monitoring reference manual" is the official guide to uncore performance monitoring interfaces and events.
  2. 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.
  3. In the ten years that I have been working with the performance counters on Intel processors, I never ran across -- not sure what to think about it yet, but it appears to be limited to the core performance counters.
  4. I have found 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.