Anuket Project

PMU

Metrics List & Dependencies:

Technology

/Category

Metric/

Feature/Input

NameDate TypeFormat ExampleCollectd ReleaseCollectd PluginDescriptionDependenciesLimitationsBarometerVerified (Yes/No)Comments
PMUMetricL1-dcache-loadsInteger237345.8intel_pmuLevel 1 cache for data (L1d) read accesses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricL1-dcache-load-missesInteger237345.8intel_pmuLevel 1 cache for data (L1d) read misses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricL1-dcache-storesInteger237345.8intel_pmuLevel 1 cache for data (L1d) writes by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricL1-dcache-store-missesInteger237345.8intel_pmuLevel 1 cache for data (L1d) write misses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricL1-dcache-prefetchesInteger237345.8intel_pmuLevel 1 cache for data (L1d) prefetch accesses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricL1-dcache-prefetch-missesInteger237345.8intel_pmuLevel 1 cache for data (L1d) prefetch misses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricL1-icache-loadsInteger237345.8intel_pmuLevel 1 cache for instructions (L1i) read accesses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricL1-icache-load-missesInteger237345.8intel_pmuLevel 1 cache for instructions (L1i) read misses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricL1-icache-prefetchesInteger237345.8intel_pmuLevel 1 cache for instructions (L1i) prefetch accesses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricL1-icache-prefetch-missesInteger237345.8intel_pmuLevel 1 cache for instructions (L1i) prefetch misses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricLLC-loadsInteger237345.8intel_pmuLast level cache (LLC) read accesses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricLLC-load-missesInteger237345.8intel_pmuLast level cache (LLC) read misses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricLLC-storesInteger237345.8intel_pmuLast level cache (LLC) writes by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricLLC-store-missesInteger237345.8intel_pmuLast level cache (LLC) write misses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricLLC-prefetchesInteger237345.8intel_pmuLast level cache (LLC) prefetch accesses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricLLC-prefetch-missesInteger237345.8intel_pmuLast level cache (LLC) prefetch misses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricdTLB-loadsInteger237345.8intel_pmuTranslation lookaside buffer for data (dTLB) read accesses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricdTLB-load-missesInteger237345.8intel_pmuTranslation lookaside buffer for data (dTLB) read misses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricdTLB-storesInteger237345.8intel_pmuTranslation lookaside buffer for data (dTLB) writes by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricdTLB-store-missesInteger237345.8intel_pmuTranslation lookaside buffer for data (dTLB) write misses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricdTLB-prefetchesInteger237345.8intel_pmuTranslation lookaside buffer for data (dTLB) prefetch accesses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricdTLB-prefetch-missesInteger237345.8intel_pmuTranslation lookaside buffer for data (dTLB) prefetch misses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetriciTLB-loadsInteger237345.8intel_pmuTranslation lookaside buffer for instructions (iTLB) read accesses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetriciTLB-load-missesInteger237345.8intel_pmuTranslation lookaside buffer for instructions (iTLB) read misses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricbranch-loadsInteger237345.8intel_pmuBranch prediction unit read accesses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricbranch-load-missesInteger237345.8intel_pmuBranch prediction unit read misses by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetriccpu-cyclesInteger237345.8intel_pmuTotal CPU cycles by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricinstructionsInteger237345.8intel_pmuRetired instructions by a CPU corejevents from pmu-toolsNote: these can be affected by various issues, most notably hardware interrupt counts.yesDependent on jevents library to read the metric value
PMUMetriccache-referencesInteger237345.8intel_pmuCache accesses per CPU core. Usually this indicates Last Level Cache accesses but this may vary depending on CPU type.jevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetriccache-missesInteger237345.8intel_pmuCache read misses by a CPU core. Usually this indicates Last Level Cache misses.jevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricbranchesInteger237345.8intel_pmuRetired branch instructions by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricbranch-missesInteger237345.8intel_pmuMispredicted branch instructions by a CPU corejevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricbus-cyclesInteger237345.8intel_pmuBus cycles per CPU core, which can be different from total cycles.jevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetriccpu-clockInteger237345.8intel_pmuReports the CPU clock, a high-resolution per-CPU timer, by a CPU core. Software event provided by the kernel.jevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetrictask-clockInteger237345.8intel_pmuReports a clock count specific to the task that is running, by a CPU core. Software event provided by the kernel.jevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetriccontext-switchesInteger237345.8intel_pmuNumber of context switches per CPU core. Software event provided by the kernel.jevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetriccpu-migrationsInteger237345.8intel_pmuNumber of times the process has migrated to a new CPU, by a CPU core. Software event provided by the kernel.jevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricpage-faultsInteger237345.8intel_pmuNumber of page faults by a CPU core. Software event provided by the kernel.jevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricminor-faultsInteger237345.8intel_pmuNumber of minor page faults by a CPU core. Software event provided by the kernel.jevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricmajor-faultsInteger237345.8intel_pmuNumber of major page faults by a CPU core. Software event provided by the kernel.jevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricalignment-faultsInteger237345.8intel_pmuNumber of alignment faults by a CPU core. These happen when unaligned memory accesses happen. Software event provided by the kernel.jevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUMetricemulation-faultsInteger237345.8intel_pmuNumber of emulation faults by a CPU core. The kernel sometimes traps on unimplemented instructions and emulates them for user space. Software event provided by the kernel.jevents from pmu-tools
yesDependent on jevents library to read the metric value
PMUInputCoresInteger Array as String"[0-12]" or "1,2,3"5.8.1intel_pmuThe list of CPU core(s) to be provided as input by the user for which the corresponding metrics are requiredNoneNone
Configuration input in the plugin .conf file
PMUInputConfiguration IntervalInteger1 or 105.8intel_pmuThe interval in seconds at which the metrics need to be collectdNoneNone
Configuration input in the plugin .conf file
PMUInputReport Hardware Cache EventsBooleantrue/false5.8intel_pmuReport hardware CPU cache events, list in commentsNoneNone
L1-dcache-loads, L1-dcache-load-misses, L1-dcache-stores, L1-dcache-store-misses, L1-dcache-prefetches, L1-dcache-prefetch-misses, L1-icache-loads, L1-icache-load-misses, L1-icache-prefetches, L1-icache-prefetch-misses, LLC-loads, LLC-load-misses, LLC-stores, LLC-store-misses, LLC-prefetches, LLC-prefetch-misses, dTLB-loads, dTLB-load-misses, dTLB-stores, dTLB-store-misses, dTLB-prefetches, dTLB-prefetch-misses, iTLB-loads, iTLB-load-misses, branch-loads, branch-load-misses
PMUInputReport Kernel PMU EventsBooleantrue/false5.8intel_pmuReport generalized hardware CPU events. Not all of these are available on all platforms. List in comments.NoneNone
cpu-cycles, instructions, cache-references, cache-misses, branches, branch-misses, bus-cycles
PMUInputReport Software EventsBooleantrue/false5.8intel_pmuSoftware events provided by the kernel. List in comments.NoneNone
cpu-clock, task-clock, context-switches, cpu-migrations, page-faults, minor-faults, major-faults, alignment-faults, emulation-faults
PMUInputEvent ListString"pmu-events/GenuineIntel-6-55-core.json"5.8intel_pmuPath to file with custom hardware events. The should containt description and definition for events available for given CPU type.NoneFile should be valid for supported CPU type.
Valid file for current CPU type can be obtained with use of event_download tool: https://raw.githubusercontent.com/andikleen/pmu-tools/master/event_download.py
PMUInputHardware EventsString ArrayL2_RQSTS.CODE_RD_HIT,L2_RQSTS.CODE_RD_MISS5.8intel_pmuCustom hardware events for given CPU type. Names of events must be available in "Event List" json file.event_download.py toolNo
If there are more events than counters, the kernel uses time multiplexing. With multiplexing, at the end of the run, the counter is scaled basing on total time enabled vs time running.


Sub-sections:

PMU plugin High Level Design 

Intel PMU Executed Tests

Intel PMU Performance considerations