This is not as sophisticated as Brinkley Sprunt's Brink & Abyss,
but really lightweight and easy to program as long as you know what
counters/events you wanna use. Implements 6 syscalls to access/manipulate/define
events/counters. Has a verification option which after manipulating
the counters outputs back to the TTY calling the syscall the value
read from the updated register and the desired change, so you can
easily follow if things work correctly w/o going to kernel log offline.
Uses a define_events file, where you define a complete CCCR and
ESCR structure for each CCCR and ESCR. You can modify counters themselves
directly & do:
- define events
- get event counts
- set replay MSRs (for replay tagging)
PerformanceReader can do normal and at retirement counting with
replay/front end/execution/?? tagging. It cannot do interrupt based
PEBS or IEBS though.