perf test: Add skip to --per-thread test

As reported in:
https://lore.kernel.org/linux-perf-users/20220428122821.3652015-1-tmricht@linux.ibm.com/
the 'instructions:u' event may not be supported. Add a skip using 'perf
record'.

Switch some code away from pipe to make the failures clearer.

Reported-by: Thomas Richter <tmricht@linux.ibm.com>
Signed-off-by: Ian Rogers <irogers@google.com>
Tested-by: Thomas Richter <tmricht@linux.ibm.com>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
Cc: Sven Schnelle <svens@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Link: https://lore.kernel.org/r/20220505182505.3313191-1-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Ian Rogers 2022-05-05 11:25:05 -07:00 committed by Arnaldo Carvalho de Melo
parent 33cd692803
commit 280c36d26e
1 changed files with 41 additions and 5 deletions

View File

@ -5,11 +5,43 @@
set -e
err=0
perfdata=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
cleanup() {
rm -f ${perfdata}
rm -f ${perfdata}.old
trap - exit term int
}
trap_cleanup() {
cleanup
exit 1
}
trap trap_cleanup exit term int
test_per_thread() {
echo "Basic --per-thread mode test"
perf record -e instructions:u --per-thread -o- true 2> /dev/null \
| perf report -i- -q \
| egrep -q true
if ! perf record -e instructions:u -o ${perfdata} --quiet true 2> /dev/null
then
echo "Per-thread record [Skipped instructions:u not supported]"
if [ $err -ne 1 ]
then
err=2
fi
return
fi
if ! perf record -e instructions:u --per-thread -o ${perfdata} true 2> /dev/null
then
echo "Per-thread record of instructions:u [Failed]"
err=1
return
fi
if ! perf report -i ${perfdata} -q | egrep -q true
then
echo "Per-thread record [Failed missing output]"
err=1
return
fi
echo "Basic --per-thread mode test [Success]"
}
@ -18,6 +50,10 @@ test_register_capture() {
if ! perf list | egrep -q 'br_inst_retired.near_call'
then
echo "Register capture test [Skipped missing instruction]"
if [ $err -ne 1 ]
then
err=2
fi
return
fi
if ! perf record --intr-regs=\? 2>&1 | egrep -q 'available registers: AX BX CX DX SI DI BP SP IP FLAGS CS SS R8 R9 R10 R11 R12 R13 R14 R15'
@ -37,8 +73,8 @@ test_register_capture() {
echo "Register capture test [Success]"
}
# Test for platform support and return TEST_SKIP
[ $(uname -m) = s390x ] && exit 2
test_per_thread
test_register_capture
cleanup
exit $err