* [PATCH v2] perf test: Add skip to --per-thread test
@ 2022-05-03 4:34 Ian Rogers
2022-05-05 17:44 ` Arnaldo Carvalho de Melo
0 siblings, 1 reply; 2+ messages in thread
From: Ian Rogers @ 2022-05-03 4:34 UTC (permalink / raw)
To: Thomas Richter, linux-kernel, linux-perf-users, acme, Jiri Olsa,
Namhyung Kim
Cc: svens, gor, sumanthk, hca, Ian Rogers
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>
Tested-by: Thomas Richter <tmricht@linux.ibm.com>
Signed-off-by: Ian Rogers <irogers@google.com>
---
tools/perf/tests/shell/record.sh | 44 +++++++++++++++++++++++++++++---
1 file changed, 41 insertions(+), 3 deletions(-)
diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/record.sh
index cd1cf14259b8..00c7285ce1ac 100755
--- a/tools/perf/tests/shell/record.sh
+++ b/tools/perf/tests/shell/record.sh
@@ -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'
@@ -39,4 +75,6 @@ test_register_capture() {
test_per_thread
test_register_capture
+
+cleanup
exit $err
--
2.36.0.464.gb9c8b46e94-goog
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH v2] perf test: Add skip to --per-thread test
2022-05-03 4:34 [PATCH v2] perf test: Add skip to --per-thread test Ian Rogers
@ 2022-05-05 17:44 ` Arnaldo Carvalho de Melo
0 siblings, 0 replies; 2+ messages in thread
From: Arnaldo Carvalho de Melo @ 2022-05-05 17:44 UTC (permalink / raw)
To: Ian Rogers
Cc: Thomas Richter, linux-kernel, linux-perf-users, Jiri Olsa,
Namhyung Kim, svens, gor, sumanthk, hca
Em Mon, May 02, 2022 at 09:34:00PM -0700, Ian Rogers escreveu:
> 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.
Can you please resubmit this on top of my perf/core branch? I had
already applied Thomas fix and published perf/core publicly, so I rather
not rebase at this point.
Basically get your current tools/perf/tests/shell/record.sh file, with
this fix, copy it, clone my perf/core branch, copy
tools/perf/tests/shell/record.sh there and commit, then please resubmit
:-)
- Arnaldo
> Reported-by: Thomas Richter <tmricht@linux.ibm.com>
> Tested-by: Thomas Richter <tmricht@linux.ibm.com>
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
> tools/perf/tests/shell/record.sh | 44 +++++++++++++++++++++++++++++---
> 1 file changed, 41 insertions(+), 3 deletions(-)
>
> diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/record.sh
> index cd1cf14259b8..00c7285ce1ac 100755
> --- a/tools/perf/tests/shell/record.sh
> +++ b/tools/perf/tests/shell/record.sh
> @@ -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'
> @@ -39,4 +75,6 @@ test_register_capture() {
>
> test_per_thread
> test_register_capture
> +
> +cleanup
> exit $err
> --
> 2.36.0.464.gb9c8b46e94-goog
--
- Arnaldo
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-05-05 17:44 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-05-03 4:34 [PATCH v2] perf test: Add skip to --per-thread test Ian Rogers
2022-05-05 17:44 ` Arnaldo Carvalho de Melo
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.