HP Caliper User's Guide

Figure 13-4 Example of PMU Trace Report
PMU Trace Buffer 1, Kernel Thread Id 2218765, Samples 1 - 170
[IIR:IA64_INST_RETIRED, NR: NOPS_RETIRED, CC: CPU_CYCLES]
----------------------------------------------------------------------------------
--CPU Event-- --CPU Event-- -CPU Event-- ------IP Samples------
Sample IIR NR CC Bundle Address Sample
Number Count Count Count (module:function) Origin
----------------------------------------------------------------------------------
1 1996102 357759 2030895 0x4001230 TRG(0x1)
(divmod::main)
2 73 10 241 0x4001300 TRG(0x2)
(divmod::main)
3 4 2 22 0x4001230 TRG(0x1)
(divmod::main)
4 73 10 103 0x4001300 TRG(0x2)
(divmod::main)
[...]
The report shows that 1.9 M instructions retired before HP Caliper took the first sample.
The first sample, indicated by TRG(0x1) in the Sample Origin column, was
“TRiGgered” by a break instruction generated by the
CALIPER_PMU_TAKE_SAMPLE_1() macro.
The second sample was triggered when the processor executed the
CALIPER_PMU_TAKE_SAMPLE_2() macro. Between those two statements, 73
instructions retired, among which were 10 nop instructions, taking 241 cycles.
The third and fourth samples show the same sequence. The report shows that on the
second execution the same instructions were executed, but only took 103 cycles. The
code executed between the end and the beginning of that particular loop body took
about 22 cycles.
Precautions When Using Triggered Samples
Keep these points in mind:
Generating a large number of triggered samples might result in HP Caliper losing
samples. A rule of thumb to avoid losing samples is to limit either of these:
Total number of such samples to be on the order of hundreds
Rate of sampling to an order of hundreds or thousands of samples per second
Remove the trigger macros in performance-critical regions of code in production
executables.
The macros CALIPER_PMU_TAKE_SAMPLE_n() expand to generate inline assembly
instructions, specifically _Asm_break.
210 HP Caliper Features Specific to HP-UX