Messages in this thread | | | From | Ian Rogers <> | Date | Mon, 2 May 2022 21:33:05 -0700 | Subject | Re: [PATCH] perf test: Add skip to --per-thread test |
| |
On Mon, May 2, 2022 at 2:39 AM Thomas Richter <tmricht@linux.ibm.com> wrote: > > On 4/29/22 08:13, Ian Rogers wrote: > > 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 > > stat'. > > > > 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> > > --- > > 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..efc0cb07a929 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 stat -e instructions:u --quiet true > > + 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 > > Ian, > > thanks very much for looking into this. > I have tested your patch on several configurations and to be perfect, please > change this line: > # git diff > diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/record.sh > index efc0cb07a929..9cb8494f314d 100755 > --- a/tools/perf/tests/shell/record.sh > +++ b/tools/perf/tests/shell/record.sh > @@ -21,7 +21,7 @@ trap trap_cleanup exit term int > > test_per_thread() { > echo "Basic --per-thread mode test" > - if ! perf stat -e instructions:u --quiet true > + if ! perf record -e instructions:u --quiet true 2> /dev/null > then > echo "Per-thread record [Skipped instructions:u not supported]" > if [ $err -ne 1 ] > # > > This runs fine, just use record instead of stat, you use perf record later > on anyway. > > With this change you have my > Tested-by: Thomas Richter <tmricht@linux.ibm.com>
Thanks! Done, but I also add a '-o' in v2 so the perf.data file is cleaned up by the cleanup function.
Ian
> -- > Thomas Richter, Dept 3303, IBM s390 Linux Development, Boeblingen, Germany > -- > Vorsitzender des Aufsichtsrats: Gregor Pillen > Geschäftsführung: David Faller > Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294
| |