From: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>
To: Alexey Budankov <alexey.budankov@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>,
Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>, Andi Kleen <ak@linux.intel.com>,
linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v5] perf record: collect user registers set jointly with dwarf stacks
Date: Tue, 4 Jun 2019 11:12:20 -0300 [thread overview]
Message-ID: <20190604141220.GG24504@kernel.org> (raw)
In-Reply-To: <3dc0c67e-9ea3-b9f5-1aa2-e87603b29c37@linux.intel.com>
Em Fri, May 31, 2019 at 09:27:38AM +0300, Alexey Budankov escreveu:
> On 30.05.2019 22:41, Arnaldo Carvalho de Melo wrote:
> > Em Thu, May 30, 2019 at 10:03:36PM +0300, Alexey Budankov escreveu:
> >> When dwarf stacks are collected jointly with user specified register
> >> set using --user-regs option like below the full register context is
> >> captured on a sample:
> >>
> >> $ perf record -g --call-graph dwarf,1024 --user-regs=IP,SP,BP -- stack_test2.g.O3
> >>
> >> 188143843893585 0x6b48 [0x4f8]: PERF_RECORD_SAMPLE(IP, 0x4002): 23828/23828: 0x401236 period: 1363819 addr: 0x7ffedbdd51ac
> >> ... FP chain: nr:0
> >> ... user regs: mask 0xff0fff ABI 64-bit
> >> .... AX 0x53b
> >> .... BX 0x7ffedbdd3cc0
> >> .... CX 0xffffffff
> >> .... DX 0x33d3a
> >> .... SI 0x7f09b74c38d0
> >> .... DI 0x0
> >> .... BP 0x401260
> >> .... SP 0x7ffedbdd3cc0
> >> .... IP 0x401236
> >> .... FLAGS 0x20a
> >> .... CS 0x33
> >> .... SS 0x2b
> >> .... R8 0x7f09b74c3800
> >> .... R9 0x7f09b74c2da0
> >> .... R10 0xfffffffffffff3ce
> >> .... R11 0x246
> >> .... R12 0x401070
> >> .... R13 0x7ffedbdd5db0
> >> .... R14 0x0
> >> .... R15 0x0
> >> ... ustack: size 1024, offset 0xe0
> >> . data_src: 0x5080021
> >> ... thread: stack_test2.g.O:23828
> >> ...... dso: /root/abudanko/stacks/stack_test2.g.O3
> >>
> >> After applying the change suggested in the patch the sample data contain
> >> only user specified register values. IP and SP registers (DWARF_MINIMAL_REGS)
> >> are collected anyways regardless of the --user-regs value provided from
> >> the command line:
> >
> > Applied, changed the subject and description to:
> >
> > perf record: Allow mixing --user-regs with --call-graph=dwarf
> >
> > When DWARF stacks were requested and at the same time that the user
> > specifies a register set using the --user-regs option the full register
> > context was being captured on samples:
> >
> > $ perf record -g --call-graph dwarf,1024 --user-regs=IP,SP,BP -- stack_test2.g.O3
> >
> > 188143843893585 0x6b48 [0x4f8]: PERF_RECORD_SAMPLE(IP, 0x4002): 23828/23828: 0x401236 period: 1363819 addr: 0x7ffedbdd51ac
> > ... FP chain: nr:0
> > ... user regs: mask 0xff0fff ABI 64-bit
> > .... AX 0x53b
> > .... BX 0x7ffedbdd3cc0
> > .... CX 0xffffffff
> > .... DX 0x33d3a
> > .... SI 0x7f09b74c38d0
> > .... DI 0x0
> > .... BP 0x401260
> > .... SP 0x7ffedbdd3cc0
> > .... IP 0x401236
> > .... FLAGS 0x20a
> > .... CS 0x33
> > .... SS 0x2b
> > .... R8 0x7f09b74c3800
> > .... R9 0x7f09b74c2da0
> > .... R10 0xfffffffffffff3ce
> > .... R11 0x246
> > .... R12 0x401070
> > .... R13 0x7ffedbdd5db0
> > .... R14 0x0
> > .... R15 0x0
> > ... ustack: size 1024, offset 0xe0
> > . data_src: 0x5080021
> > ... thread: stack_test2.g.O:23828
> > ...... dso: /root/abudanko/stacks/stack_test2.g.O3
> >
> > I.e. the --user-regs=IP,SP,BP was being ignored, being overridden by the
> > needs of --call-graph=dwarf.
> >
> > After applying the change in this patch the sample data contains the
> > user specified register, but making sure that at least the minimal set
> > of register needed for DWARF unwinding (DWARF_MINIMAL_REGS) is
> > requested.
> >
> > The user is warned that DWARF unwinding may not work if extra registers
> > end up being needed.
> >
> > -g call-graph dwarf,K full_regs
> > --user-regs=user_regs user_regs
> > -g call-graph dwarf,K --user-regs=user_regs user_regs + DWARF_MINIMAL_REGS
> > <REST remains the same>
> >
>
> Sounds better. Thanks!
>
> ~Alexey
Now cross building to a few arches is failing, so far:
[perfbuilder@quaco ~]$ cat /tmp/dm.log/summary
alpine:3.4: Ok
alpine:3.5: Ok
alpine:3.6: Ok
alpine:3.7: Ok
alpine:3.8: Ok
alpine:3.9: Ok
alpine:edge: Ok
amazonlinux:1: Ok
amazonlinux:2: Ok
android-ndk:r12b-arm: Ok
android-ndk:r15c-arm: Ok
centos:5: Ok
centos:6: Ok
centos:7: Ok
clearlinux:latest: Ok
debian:8: Ok
debian:9: Ok
debian:experimental: Ok
debian:experimental-x-arm64: Ok
debian:experimental-x-mips: FAIL
debian:experimental-x-mips64: FAIL
debian:experimental-x-mipsel: FAIL
fedora:20: Ok
fedora:22: Ok
fedora:23: Ok
fedora:24: Ok
fedora:24-x-ARC-uClibc: FAIL
fedora:25: Ok
fedora:26: Ok
fedora:27: Ok
[perfbuilder@quaco ~]$
For instance:
[perfbuilder@quaco ~]$ cat /tmp/dm.log/debian\:experimental-x-mips64
<SNIP>
CC /tmp/build/perf/tests/pmu.o
util/evsel.c: In function '__perf_evsel__config_callchain':
util/evsel.c:672:38: error: 'PERF_REG_IP' undeclared (first use in this function); did you mean 'PERF_REGS_MAX'?
#define DWARF_MINIMAL_REGS ((1ULL << PERF_REG_IP) | (1ULL << PERF_REG_SP))
^~~~~~~~~~~
util/evsel.c:708:31: note: in expansion of macro 'DWARF_MINIMAL_REGS'
attr->sample_regs_user |= DWARF_MINIMAL_REGS;
^~~~~~~~~~~~~~~~~~
util/evsel.c:672:38: note: each undeclared identifier is reported only once for each function it appears in
#define DWARF_MINIMAL_REGS ((1ULL << PERF_REG_IP) | (1ULL << PERF_REG_SP))
^~~~~~~~~~~
util/evsel.c:708:31: note: in expansion of macro 'DWARF_MINIMAL_REGS'
attr->sample_regs_user |= DWARF_MINIMAL_REGS;
^~~~~~~~~~~~~~~~~~
util/evsel.c:672:62: error: 'PERF_REG_SP' undeclared (first use in this function); did you mean 'PERF_MEM_S'?
#define DWARF_MINIMAL_REGS ((1ULL << PERF_REG_IP) | (1ULL << PERF_REG_SP))
^~~~~~~~~~~
util/evsel.c:708:31: note: in expansion of macro 'DWARF_MINIMAL_REGS'
attr->sample_regs_user |= DWARF_MINIMAL_REGS;
^~~~~~~~~~~~~~~~~~
LD /tmp/build/perf/bench/perf-in.o
CC /tmp/build/perf/tests/hists_common.o
mv: cannot stat '/tmp/build/perf/util/.evsel.o.tmp': No such file or directory
make[4]: *** [/git/linux/tools/build/Makefile.build:97: /tmp/build/perf/util/evsel.o] Error 1
make[4]: *** Waiting for unfinished jobs....
<SNIP>
[perfbuilder@quaco ~]$ cat /tmp/dm.log/fedora\:24-x-ARC-uClibc
<SNIP>
CC /tmp/build/perf/tests/mmap-basic.o
CC /tmp/build/perf/ui/hist.o
util/evsel.c: In function '__perf_evsel__config_callchain':
util/evsel.c:672:38: error: 'PERF_REG_IP' undeclared (first use in this function); did you mean 'PERF_MEM_S'?
#define DWARF_MINIMAL_REGS ((1ULL << PERF_REG_IP) | (1ULL << PERF_REG_SP))
^
util/evsel.c:708:31: note: in expansion of macro 'DWARF_MINIMAL_REGS'
attr->sample_regs_user |= DWARF_MINIMAL_REGS;
^~~~~~~~~~~~~~~~~~
util/evsel.c:672:38: note: each undeclared identifier is reported only once for each function it appears in
#define DWARF_MINIMAL_REGS ((1ULL << PERF_REG_IP) | (1ULL << PERF_REG_SP))
^
util/evsel.c:708:31: note: in expansion of macro 'DWARF_MINIMAL_REGS'
attr->sample_regs_user |= DWARF_MINIMAL_REGS;
^~~~~~~~~~~~~~~~~~
util/evsel.c:672:62: error: 'PERF_REG_SP' undeclared (first use in this function); did you mean 'PERF_REG_IP'?
#define DWARF_MINIMAL_REGS ((1ULL << PERF_REG_IP) | (1ULL << PERF_REG_SP))
^
util/evsel.c:708:31: note: in expansion of macro 'DWARF_MINIMAL_REGS'
attr->sample_regs_user |= DWARF_MINIMAL_REGS;
^~~~~~~~~~~~~~~~~~
MKDIR /tmp/build/perf/ui/stdio/
mv: cannot stat '/tmp/build/perf/util/.evsel.o.tmp': No such file or directory
/git/linux/tools/build/Makefile.build:96: recipe for target '/tmp/build/perf/util/evsel.o' failed
make[4]: *** [/tmp/build/perf/util/evsel.o] Error 1
next prev parent reply other threads:[~2019-06-04 14:12 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-30 19:03 [PATCH v5] perf record: collect user registers set jointly with dwarf stacks Alexey Budankov
2019-05-30 19:41 ` Arnaldo Carvalho de Melo
2019-05-31 6:27 ` Alexey Budankov
2019-06-04 14:12 ` Arnaldo Carvalho de Melo [this message]
2019-06-04 14:56 ` Alexey Budankov
2019-06-04 15:42 ` Arnaldo Carvalho de Melo
2019-06-17 18:58 ` [tip:perf/core] perf record: Allow mixing --user-regs with --call-graph=dwarf tip-bot for Alexey Budankov
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=20190604141220.GG24504@kernel.org \
--to=arnaldo.melo@gmail.com \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=alexey.budankov@linux.intel.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.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.