All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: German Gomez <german.gomez@arm.com>
Cc: James Clark <james.clark@arm.com>,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
	mark.rutland@arm.com, namhyung@kernel.org, leo.yan@linaro.org,
	Alexandre.Truong@arm.com, Jiri Olsa <jolsa@kernel.org>
Subject: Re: [PATCH v2 1/1] perf test arm64: Test unwinding using fame-pointer (fp) mode
Date: Mon, 21 Mar 2022 17:52:50 -0300	[thread overview]
Message-ID: <YjjlohvNAL8lKlV+@kernel.org> (raw)
In-Reply-To: <b2ff473a-f252-89c9-78b3-bacff2876869@arm.com>

Em Wed, Mar 16, 2022 at 05:48:50PM +0000, German Gomez escreveu:
> 
> On 16/03/2022 17:30, James Clark wrote:
> >
> > On 16/03/2022 17:20, German Gomez wrote:
> >> Add a shell script to check that the call-graphs generated using frame
> >> pointers (--call-graph fp) are complete and not missing leaf functions:
> >>
> >>   | $ perf test 88 -v
> >>   |  88: Check Arm64 callgraphs are complete in fp mode                  :
> >>   | --- start ---
> >>   | test child forked, pid 8734
> >>   |  + Compiling test program (/tmp/test_program.Cz3yL)...
> >>   |  + Recording (PID=8749)...
> >>   |  + Stopping perf-record...
> >>   | test_program.Cz
> >>   |                  728 leaf
> >>   |                  753 parent
> >>   |                  76c main
> >>   | test child finished with 0
> >>   | ---- end ----
> >>   | Check Arm SPE callgraphs are complete in fp mode: Ok
> >>
> > Ran it on N1SDP and it passes, and it fails if b9f6fbb3b2c2 isn't applied.
> 
> I forgot to mention in the notes that it's supposed to work with both unwinders:
> 
> $ make                # for libunwind (default)
> $ make NO_LIBUNWIND=1 # for libdw

I'll add it to the cset commit log, and also will fix this:

⬢[acme@toolbox perf]$        git am ./v2_20220316_german_gomez_perf_test_arm64_test_unwinding_using_fame_pointer_fp_mode.mbx
Applying: perf test arm64: Test unwinding using fame-pointer (fp) mode
.git/rebase-apply/patch:72: trailing whitespace.
# program
warning: 1 line adds whitespace errors.
tools/perf/tests/shell/test_arm_callgraph_fp.sh:58: trailing whitespace.
+# program
⬢[acme@toolbox perf]$
 
> >
> > Reviewed-by: James Clark <james.clark@arm.com>
> >
> >> Fixes: b9f6fbb3b2c2 ("perf arm64: Inject missing frames when using 'perf record --call-graph=fp'")
> >> Suggested-by: Jiri Olsa <jolsa@kernel.org>
> >> Signed-off-by: German Gomez <german.gomez@arm.com>
> >> ---
> >> Changes since v1: https://lore.kernel.org/all/a6ba0ea8-f070-9f79-f018-f638ff677c7c@arm.com/
> >>  - Add explicit '-g' flag to GCC command
> >> ---
> >>  .../perf/tests/shell/test_arm_callgraph_fp.sh | 68 +++++++++++++++++++
> >>  1 file changed, 68 insertions(+)
> >>  create mode 100755 tools/perf/tests/shell/test_arm_callgraph_fp.sh
> >>
> >> diff --git a/tools/perf/tests/shell/test_arm_callgraph_fp.sh b/tools/perf/tests/shell/test_arm_callgraph_fp.sh
> >> new file mode 100755
> >> index 000000000..ea1b4e6bb
> >> --- /dev/null
> >> +++ b/tools/perf/tests/shell/test_arm_callgraph_fp.sh
> >> @@ -0,0 +1,68 @@
> >> +#!/bin/sh
> >> +# Check Arm64 callgraphs are complete in fp mode
> >> +# SPDX-License-Identifier: GPL-2.0
> >> +
> >> +lscpu | grep -q "aarch64" || exit 2
> >> +
> >> +if ! [ -x "$(command -v cc)" ]; then
> >> +	echo "failed: no compiler, install gcc"
> >> +	exit 2
> >> +fi
> >> +
> >> +PERF_DATA=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
> >> +TEST_PROGRAM_SOURCE=$(mktemp /tmp/test_program.XXXXX.c)
> >> +TEST_PROGRAM=$(mktemp /tmp/test_program.XXXXX)
> >> +
> >> +cleanup_files()
> >> +{
> >> +	rm -f $PERF_DATA
> >> +	rm -f $TEST_PROGRAM_SOURCE
> >> +	rm -f $TEST_PROGRAM
> >> +}
> >> +
> >> +trap cleanup_files exit term int
> >> +
> >> +cat << EOF > $TEST_PROGRAM_SOURCE
> >> +int a = 0;
> >> +void leaf(void) {
> >> +  for (;;)
> >> +    a += a;
> >> +}
> >> +void parent(void) {
> >> +  leaf();
> >> +}
> >> +int main(void) {
> >> +  parent();
> >> +  return 0;
> >> +}
> >> +EOF
> >> +
> >> +echo " + Compiling test program ($TEST_PROGRAM)..."
> >> +
> >> +CFLAGS="-g -O0 -fno-inline -fno-omit-frame-pointer"
> >> +cc $CFLAGS $TEST_PROGRAM_SOURCE -o $TEST_PROGRAM || exit 1
> >> +
> >> +# Add a 1 second delay to skip samples that are not in the leaf() function
> >> +perf record -o $PERF_DATA --call-graph fp -e cycles//u -D 1000 -- $TEST_PROGRAM 2> /dev/null &
> >> +PID=$!
> >> +
> >> +echo " + Recording (PID=$PID)..."
> >> +sleep 2
> >> +echo " + Stopping perf-record..."
> >> +
> >> +kill $PID
> >> +wait $PID
> >> +
> >> +# expected perf-script output:
> >> +#
> >> +# program 
> >> +# 	728 leaf
> >> +# 	753 parent
> >> +# 	76c main
> >> +# ...
> >> +
> >> +perf script -i $PERF_DATA -F comm,ip,sym | head -n4
> >> +perf script -i $PERF_DATA -F comm,ip,sym | head -n4 | \
> >> +	awk '{ if ($2 != "") sym[i++] = $2 } END { if (sym[0] != "leaf" ||
> >> +						       sym[1] != "parent" ||
> >> +						       sym[2] != "main") exit 1 }'

-- 

- Arnaldo

  reply	other threads:[~2022-03-21 20:53 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-16 17:20 [PATCH v2 1/1] perf test arm64: Test unwinding using fame-pointer (fp) mode German Gomez
2022-03-16 17:30 ` James Clark
2022-03-16 17:38   ` German Gomez
2022-03-16 17:48   ` German Gomez
2022-03-21 20:52     ` Arnaldo Carvalho de Melo [this message]
2022-03-22 13:27       ` German Gomez

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YjjlohvNAL8lKlV+@kernel.org \
    --to=acme@kernel.org \
    --cc=Alexandre.Truong@arm.com \
    --cc=german.gomez@arm.com \
    --cc=james.clark@arm.com \
    --cc=jolsa@kernel.org \
    --cc=leo.yan@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=namhyung@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.