Skip to content

Commit

Permalink
perf test: Fix perf record test for precise_max
Browse files Browse the repository at this point in the history
On s390 the event instructions can not be used for recording.
This event is only supported by perf stat.

Test that each event cycles and instructions supports sampling.
If the event can not be sampled, skip it.

Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
Suggested-by: James Clark <james.clark@linaro.org>
Reviewed-by: James Clark <james.clark@linaro.org>
Link: https://lore.kernel.org/r/20250131102756.4185235-2-tmricht@linux.ibm.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
  • Loading branch information
Thomas Richter authored and Namhyung Kim committed Feb 4, 2025
1 parent 23e0a63 commit 8591994
Showing 1 changed file with 29 additions and 14 deletions.
43 changes: 29 additions & 14 deletions tools/perf/tests/shell/record.sh
Original file line number Diff line number Diff line change
Expand Up @@ -273,27 +273,42 @@ test_topdown_leader_sampling() {
}

test_precise_max() {
local -i skipped=0

echo "precise_max attribute test"
if ! perf stat -e "cycles,instructions" true 2> /dev/null
# Just to make sure event cycles is supported for sampling
if perf record -o "${perfdata}" -e "cycles" true 2> /dev/null
then
echo "precise_max attribute [Skipped no hardware events]"
return
if ! perf record -o "${perfdata}" -e "cycles:P" true 2> /dev/null
then
echo "precise_max attribute [Failed cycles:P event]"
err=1
return
fi
else
echo "precise_max attribute [Skipped no cycles:P event]"
((skipped+=1))
fi
# Just to make sure it doesn't fail
if ! perf record -o "${perfdata}" -e "cycles:P" true 2> /dev/null
# On s390 event instructions is not supported for perf record
if perf record -o "${perfdata}" -e "instructions" true 2> /dev/null
then
echo "precise_max attribute [Failed cycles:P event]"
err=1
return
# On AMD, cycles and instructions events are treated differently
if ! perf record -o "${perfdata}" -e "instructions:P" true 2> /dev/null
then
echo "precise_max attribute [Failed instructions:P event]"
err=1
return
fi
else
echo "precise_max attribute [Skipped no instructions:P event]"
((skipped+=1))
fi
# On AMD, cycles and instructions events are treated differently
if ! perf record -o "${perfdata}" -e "instructions:P" true 2> /dev/null
if [ $skipped -eq 2 ]
then
echo "precise_max attribute [Failed instructions:P event]"
err=1
return
echo "precise_max attribute [Skipped no hardware events]"
else
echo "precise_max attribute test [Success]"
fi
echo "precise_max attribute test [Success]"
}

# raise the limit of file descriptors to minimum
Expand Down

0 comments on commit 8591994

Please sign in to comment.