Re: [PATCH] perf tests: Add auto counter reload (ACR) sampling test
From: Mi, Dapeng
Date: Wed Apr 15 2026 - 05:22:52 EST
On 4/13/2026 9:30 AM, Ian Rogers wrote:
> On Sun, Apr 12, 2026 at 6:14 PM Dapeng Mi <dapeng1.mi@xxxxxxxxxxxxxxx> wrote:
>> Add auto counter reload sampling test to verify that the intended event
>> records can be captured and the self-reloaded events won't generate any
>> records.
>>
>> Signed-off-by: Dapeng Mi <dapeng1.mi@xxxxxxxxxxxxxxx>
>> ---
>> tools/perf/tests/shell/record.sh | 42 ++++++++++++++++++++++++++++++++
>> 1 file changed, 42 insertions(+)
>>
>> diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/record.sh
>> index 7cb81cf3444a..1068843282f5 100755
>> --- a/tools/perf/tests/shell/record.sh
>> +++ b/tools/perf/tests/shell/record.sh
>> @@ -402,6 +402,47 @@ test_callgraph() {
>> echo "Callgraph test [Success]"
>> }
>>
>> +test_acr_sampling() {
>> + events="{instructions/period=20000,acr_mask=0x2/u,cycles/period=40000,acr_mask=0x3/u}"
>> + pebs_events="{instructions/period=20000,acr_mask=0x2/pu,cycles/period=40000,acr_mask=0x3/u}"
>> + echo "Auto counter reload sampling test"
>> + if ! perf record -o "${perfdata}" -e "${events}" ${testprog} 2> /dev/null
>> + then
>> + echo "Auto counter reload sampling [Skipped not supported]"
>> + return
>> + fi
>> + if ! perf script -i "${perfdata}" | grep -q "period=20000,acr_mask=0x2"
>> + then
>> + echo "Auto counter reload sampling [Failed missing instructions event]"
>> + err=1
>> + return
>> + fi
>> + if perf script -i "${perfdata}" | grep -q "period=40000,acr_mask=0x3"
>> + then
>> + echo "Auto counter reload sampling [Failed cycles event shouldn't be sampled]"
>> + err=1
>> + return
>> + fi
>> + if ! perf record -o "${perfdata}" -e "${pebs_events}" ${testprog} 2> /dev/null
>> + then
>> + echo "Auto counter reload PEBS sampling [Skipped not supported]"
>> + return
>> + fi
>> + if ! perf script -i "${perfdata}" | grep -q "period=20000,acr_mask=0x2"
>> + then
>> + echo "Auto counter reload PEBS sampling [Failed missing instructions event]"
>> + err=1
>> + return
>> + fi
>> + if perf script -i "${perfdata}" | grep -q "period=40000,acr_mask=0x3"
>> + then
>> + echo "Auto counter reload PEBS sampling [Failed cycles event shouldn't be sampled]"
>> + err=1
>> + return
>> + fi
>> + echo "Auto counter reload sampling [Success]"
> Thanks Dapeng! Could we also test ratio-to-prev as well as just the
> plain acr_mask?
Ian, it could be hard to validate ratio-to-prev option in this test. On
platforms which don't support ACR, perf would automatically fallback the
ACR sampling to normal sampling, this would lead to false positives on
checking the existence of records from cycles event. I didn't find a good
way to figure out this fallback.
Since we already have independent test case to validate the ratio_to_prev
parsing. It may be unnecessary to add ratio-to-prev validation in this ACR
test.
>
> Thanks,
> Ian
>
>> +}
>> +
>> test_ratio_to_prev() {
>> echo "ratio-to-prev test"
>> if ! perf record -o /dev/null -e "{instructions, cycles/period=100000,ratio-to-prev=0.5/}" \
>> @@ -457,6 +498,7 @@ test_leader_sampling
>> test_topdown_leader_sampling
>> test_precise_max
>> test_callgraph
>> +test_acr_sampling
>> test_ratio_to_prev
>>
>> # restore the default value
>>
>> base-commit: 4e03d6494f9504f8af46ba68a2a8b6877c196789
>> --
>> 2.34.1
>>