Re: [PATCH] perf test: Speed up test case 70 annotate basic tests

From: Namhyung Kim
Date: Fri Jun 07 2024 - 16:06:03 EST


On Fri, Jun 07, 2024 at 07:43:52AM +0200, Thomas Richter wrote:
> On some s390 linux machine (mostly older models) and with debug
> packages installed, the test case 'perf annotate basic tests' runs
> for some longer time.
> Speed up the test and save the output of command perf annotate
> in a temporary file. This is used to perform pattern matching via
> grep command. This saves on invocation of perf annotate which
> runs for some time.
>
> Output before:
> # time bash -x tests/shell/annotate.sh >/dev/null 2>&1; echo EXIT CODE $?
>
> real 4m35.543s
> user 3m19.442s
> sys 1m14.322s
> EXIT CODE 0
> #
> Output after:
> # time bash -x tests/shell/annotate.sh >/dev/null 2>&1; echo EXIT CODE $?
>
> real 2m2.881s
> user 1m30.980s
> sys 0m30.684s
> EXIT CODE 0
> #

Oh.. it takes too long. I think we should limit the output from
perf annotate in some way. Anyway, the patch looks ok.

>
> Signed-off-by: Thomas Richter <tmricht@xxxxxxxxxxxxx>

Acked-by: Namhyung Kim <namhyung@xxxxxxxxxx>

Thanks,
Namhyung

> ---
> tools/perf/tests/shell/annotate.sh | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/tools/perf/tests/shell/annotate.sh b/tools/perf/tests/shell/annotate.sh
> index 1db1e8113d99..b072d9b97387 100755
> --- a/tools/perf/tests/shell/annotate.sh
> +++ b/tools/perf/tests/shell/annotate.sh
> @@ -15,12 +15,13 @@ skip_test_missing_symbol ${testsym}
>
> err=0
> perfdata=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
> +perfout=$(mktemp /tmp/__perf_test.perf.out.XXXXX)
> testprog="perf test -w noploop"
> # disassembly format: "percent : offset: instruction (operands ...)"
> disasm_regex="[0-9]*\.[0-9]* *: *\w*: *\w*"
>
> cleanup() {
> - rm -rf "${perfdata}"
> + rm -rf "${perfdata}" "${perfout}"
> rm -rf "${perfdata}".old
>
> trap - EXIT TERM INT
> @@ -41,8 +42,11 @@ test_basic() {
> return
> fi
>
> + # Generate the annotated output file
> + perf annotate -i "${perfdata}" --stdio 2> /dev/null > "${perfout}"
> +
> # check if it has the target symbol
> - if ! perf annotate -i "${perfdata}" 2> /dev/null | grep "${testsym}"
> + if ! grep "${testsym}" "${perfout}"
> then
> echo "Basic annotate [Failed: missing target symbol]"
> err=1
> @@ -50,7 +54,7 @@ test_basic() {
> fi
>
> # check if it has the disassembly lines
> - if ! perf annotate -i "${perfdata}" 2> /dev/null | grep "${disasm_regex}"
> + if ! grep "${disasm_regex}" "${perfout}"
> then
> echo "Basic annotate [Failed: missing disasm output from default disassembler]"
> err=1
> --
> 2.45.1
>