From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Thomas Richter <tmricht@linux.vnet.ibm.com>
Cc: linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
brueckner@linux.vnet.ibm.com, schwidefsky@de.ibm.com,
heiko.carstens@de.ibm.com
Subject: Re: [PATCH v2] perf trace: Fix missing handling of --call-graph dwarf
Date: Fri, 12 Jan 2018 13:47:06 -0300 [thread overview]
Message-ID: <20180112164706.GE9655@kernel.org> (raw)
In-Reply-To: <20180112150142.GC9655@kernel.org>
Em Fri, Jan 12, 2018 at 12:01:42PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Fri, Jan 12, 2018 at 11:20:32AM -0300, Arnaldo Carvalho de Melo escreveu:
> > Em Fri, Jan 12, 2018 at 11:03:55AM +0100, Thomas Richter escreveu:
> > > On Intel platform when I execute test case
> > > probe libc's inet_pton & backtrace it with ping
> > > I get this output which is correct:
>
> > > [root@f27 perf]# ./perf trace --no-syscalls
> > > -e probe_libc:inet_pton/max-stack=3/ ping -6 -c 1 ::1
> > > PING ::1(::1) 56 data bytes
> > > 64 bytes from ::1: icmp_seq=1 ttl=64 time=0.064 ms
>
> > > --- ::1 ping statistics ---
> > > 1 packets transmitted, 1 received, 0% packet loss, time 0ms
> > > rtt min/avg/max/mdev = 0.064/0.064/0.064/0.000 ms
> > > 0.000 probe_libc:inet_pton:(7f26a88498a0))
> > > __GI___inet_pton (/usr/lib64/libc-2.26.so)
> > > getaddrinfo (/usr/lib64/libc-2.26.so)
> > > main (/usr/bin/ping)
> > > [root@f27 perf]#
> > >
> > > However when I add the global --call-graph dwarf to the command
> > > line I get the exactly same result which is wrong:
> > >
> > > [root@f27 perf]# ./perf trace --no-syscalls --call-graph dwarf
> > > -e probe_libc:inet_pton/max-stack=3/ ping -6 -c 1 ::1
> > >
> > > My understanding is that the '--call-graph dwarf' option should be global
> > > and applies to all events. However it is ignored.
> >
> > It is global, but then, per-event settings can override it.
> >
> > So if you say that the following call (without that /max-stack=3/, which
> > implies DWARF, which is the safest bet for userspace callchains):
> > [root@jouet ~]# perf trace --no-syscalls --call-graph dwarf -e probe_libc:inet_pton ping -6 -c 1 ::1
> > PING ::1(::1) 56 data bytes
> > 64 bytes from ::1: icmp_seq=1 ttl=64 time=0.086 ms
> >
> > --- ::1 ping statistics ---
> > 1 packets transmitted, 1 received, 0% packet loss, time 0ms
> > rtt min/avg/max/mdev = 0.086/0.086/0.086/0.000 ms
> > 0.000 probe_libc:inet_pton:(7fafee7ce350))
> > [root@jouet ~]#
> >
> > And it doesn't work, right, that is a bug. I'll check if your patch
> > fixes that and then will correct the cset log, i.e. this part:
> >
> > [root@f27 perf]# ./perf trace --no-syscalls --call-graph dwarf
> > -e probe_libc:inet_pton/max-stack=3/ ping -6 -c 1 ::1
> >
> > Should read:
> >
> > [root@f27 perf]# ./perf trace --no-syscalls --call-graph dwarf
> > -e probe_libc:inet_pton ping -6 -c 1 ::1
> >
> > And _should_ produce a call-graph, without a stack limit, ok?
> >
> > I'll reply to this message after testing your patch.
>
> You patch works as advertised, but we only get the callgraph if we
> specify max-stack in the event definition, which is odd, i.e. it serves
> to ask for callgraphs, but then its value is ignored, to make it clear,
> with your patch applied I get:
>
> [root@jouet ~]# perf trace --no-syscalls --call-graph dwarf -e probe_libc:inet_pton ping -6 -c 1 ::1
> PING ::1(::1) 56 data bytes
> 64 bytes from ::1: icmp_seq=1 ttl=64 time=0.079 ms
>
> --- ::1 ping statistics ---
> 1 packets transmitted, 1 received, 0% packet loss, time 0ms
> rtt min/avg/max/mdev = 0.079/0.079/0.079/0.000 ms
> 0.000 probe_libc:inet_pton:(7f4585f7d350))
> [root@jouet ~]#
>
> Which is a bug, the global setting should have been applied to the only
> event set.
Please pull my perf/core branch, there are two csets there that should
fix this:
[acme@jouet perf]$ git log --oneline -2
cc28fec89f2a (HEAD -> perf/core, acme.korg/perf/core) perf trace: Fix setting of --call-graph/--max-stack for non-syscall events
236d812c55c2 perf trace: No need to set PERF_SAMPLE_IDENTIFIER explicitely
[acme@jouet perf]$
https://git.kernel.org/acme/c/cc28fec89f2a
https://git.kernel.org/acme/c/236d812c55c2
236d812c55c2 is just a simplification to make cc28fec89f2a smaller and
with just one purpose.
There is still room for improvement, I noticed overriding is not working
for the probe event, investigating it now.
- Arnaldo
next prev parent reply other threads:[~2018-01-12 16:47 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-12 10:03 [PATCH v2] perf trace: Fix missing handling of --call-graph dwarf Thomas Richter
2018-01-12 14:20 ` Arnaldo Carvalho de Melo
2018-01-12 15:01 ` Arnaldo Carvalho de Melo
2018-01-12 16:47 ` Arnaldo Carvalho de Melo [this message]
2018-01-12 20:02 ` Arnaldo Carvalho de Melo
2018-01-15 9:11 ` Thomas-Mich Richter
2018-01-15 13:20 ` Arnaldo Carvalho de Melo
2018-01-15 12:31 ` Thomas-Mich Richter
2018-01-15 13:57 ` Arnaldo Carvalho de Melo
2018-01-15 14:16 ` Arnaldo Carvalho de Melo
2018-01-15 14:50 ` Thomas-Mich Richter
2018-01-15 15:02 ` Arnaldo Carvalho de Melo
2018-01-15 14:45 ` Hendrik Brueckner
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=20180112164706.GE9655@kernel.org \
--to=acme@kernel.org \
--cc=brueckner@linux.vnet.ibm.com \
--cc=heiko.carstens@de.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=schwidefsky@de.ibm.com \
--cc=tmricht@linux.vnet.ibm.com \
/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.