The rabbit design
concepts
-
Intel Pentium and Pentium Pro/II/III families of processors
-
time stamp counter (64-bit cycle counter)
-
two performance-monitoring counters (40-bit event counter)
-
AMD Athlon family of processors
-
time stamp counter (64-bit cycle counter)
-
four performance-monitoring counters (48-bit event counter)
-
select two/four events to monitor, processor will increment counters as
events occur
-
periodic sampling of the counters, driven by an interval timer
-
time-shared rotation through a list of event pairs, changing the selection
at the sampling points
-
pair = 2 or 4 events, as appropriate
-
use predefined groups of event pairs, or select your own pairs
-
summary output, or time-stamped data for plotting
-
no modifications to the target program are required
-
especially suited for non-interactive environments
-
lots of examples
The PMC library design concepts
-
Decisions about "when to measure" are placed directly in the program.
-
Decisions about "what to measure" are delayed until runtime.
-
Measurements are taken as cleanly as possible.
-
As many options are granted as the processor and operating system allow.
-
The data structures and interfaces are machine-independent as far as possible.
-
Measurement data is available to the program.
The current implementation
-
Linux 2.[024].x kernels
-
/dev/pmc loadable module
-
no other kernel modifications
-
measurements are attached to the processor, not the process
-
for best results, take measurements on a single-processor system with no
other users