54 lines
2.4 KiB
Plaintext
54 lines
2.4 KiB
Plaintext
Intel Auto Counter Reload Support
|
|
---------------------------------
|
|
Support for Intel Auto Counter Reload in perf tools
|
|
|
|
Auto counter reload provides a means for software to specify to hardware
|
|
that certain counters, if supported, should be automatically reloaded
|
|
upon overflow of chosen counters. By taking a sample only if the rate of
|
|
one event exceeds some threshold relative to the rate of another event,
|
|
this feature enables software to sample based on the relative rate of
|
|
two or more events. To enable this, the user must provide a sample period
|
|
term and a bitmask ("acr_mask") for each relevant event specifying the
|
|
counters in an event group to reload if the event's specified sample
|
|
period is exceeded.
|
|
|
|
For example, if the user desires to measure a scenario when IPC > 2,
|
|
the event group might look like the one below:
|
|
|
|
perf record -e {cpu_atom/instructions,period=200000,acr_mask=0x2/, \
|
|
cpu_atom/cycles,period=100000,acr_mask=0x3/} -- true
|
|
|
|
In this case, if the "instructions" counter exceeds the sample period of
|
|
200000, the second counter, "cycles", will be reset and a sample will be
|
|
taken. If "cycles" is exceeded first, both counters in the group will be
|
|
reset. In this way, samples will only be taken for cases where IPC > 2.
|
|
|
|
The acr_mask term is a hexadecimal value representing a bitmask of the
|
|
events in the group to be reset when the period is exceeded. In the
|
|
example above, "instructions" is assigned an acr_mask of 0x2, meaning
|
|
only the second event in the group is reloaded and a sample is taken
|
|
for the first event. "cycles" is assigned an acr_mask of 0x3, meaning
|
|
that both event counters will be reset if the sample period is exceeded
|
|
first.
|
|
|
|
ratio-to-prev Event Term
|
|
------------------------
|
|
To simplify this, an event term "ratio-to-prev" is provided which is used
|
|
alongside the sample period term n or the -c/--count option. This would
|
|
allow users to specify the desired relative rate between events as a
|
|
ratio. Note: Both events compared must belong to the same PMU.
|
|
|
|
The command above would then become
|
|
|
|
perf record -e {cpu_atom/instructions/, \
|
|
cpu_atom/cycles,period=100000,ratio-to-prev=0.5/} -- true
|
|
|
|
ratio-to-prev is the ratio of the event using the term relative
|
|
to the previous event in the group, which will always be 1,
|
|
for a 1:0.5 or 2:1 ratio.
|
|
|
|
To sample for IPC < 2 for example, the events need to be reordered:
|
|
|
|
perf record -e {cpu_atom/cycles/, \
|
|
cpu_atom/instructions,period=200000,ratio-to-prev=2.0/} -- true
|