linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>
To: Jin Yao <yao.jin@linux.intel.com>
Cc: jolsa@kernel.org, peterz@infradead.org, mingo@redhat.com,
	alexander.shishkin@linux.intel.com, Linux-kernel@vger.kernel.org,
	ak@linux.intel.com, kan.liang@intel.com, yao.jin@intel.com
Subject: Re: [PATCH v5 2/3] perf report: Support interactive annotation of code without symbols
Date: Wed, 18 Mar 2020 12:43:58 -0300	[thread overview]
Message-ID: <20200318154358.GH11531@kernel.org> (raw)
In-Reply-To: <20200318154206.GG11531@kernel.org>

Em Wed, Mar 18, 2020 at 12:42:06PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Thu, Feb 27, 2020 at 12:39:38PM +0800, Jin Yao escreveu:
> > For perf report on stripped binaries it is currently impossible to do
> > annotation. The annotation state is all tied to symbols, but there are
> > either no symbols, or symbols are not covering all the code.
> > 
> > We should support the annotation functionality even without symbols.
> > 
> > This patch fakes a symbol and the symbol name is the string of address.
> > After that, we just follow current annotation working flow.
> > 
> > For example,
> > 
> > 1. perf report
> > 
> > Overhead  Command  Shared Object     Symbol
> >   20.67%  div      libc-2.27.so      [.] __random_r
> >   17.29%  div      libc-2.27.so      [.] __random
> >   10.59%  div      div               [.] 0x0000000000000628
> >    9.25%  div      div               [.] 0x0000000000000612
> >    6.11%  div      div               [.] 0x0000000000000645
> > 
> > 2. Select the line of "10.59%  div      div               [.] 0x0000000000000628" and ENTER.
> > 
> > Annotate 0x0000000000000628
> > Zoom into div thread
> > Zoom into div DSO (use the 'k' hotkey to zoom directly into the kernel)
> > Browse map details
> > Run scripts for samples of symbol [0x0000000000000628]
> > Run scripts for all samples
> > Switch to another data file in PWD
> > Exit
> > 
> > 3. Select the "Annotate 0x0000000000000628" and ENTER.
> > 
> > Percent│
> >        │
> >        │
> >        │     Disassembly of section .text:
> >        │
> >        │     0000000000000628 <.text+0x68>:
> >        │       divsd %xmm4,%xmm0
> >        │       divsd %xmm3,%xmm1
> >        │       movsd (%rsp),%xmm2
> >        │       addsd %xmm1,%xmm0
> >        │       addsd %xmm2,%xmm0
> >        │       movsd %xmm0,(%rsp)
> > 
> > Now we can see the dump of object starting from 0x628.
> 
> Testing this I noticed this discrepancy when using 'o' in the annotate
> view to see the address columns:
> 
> Samples: 10K of event 'cycles', 4000 Hz, Event count (approx.): 7738221585
> 0x0000000000ea8b97  /usr/libexec/gcc/x86_64-redhat-linux/9/cc1 [Percent: local period]
> Percent│                                                                                                                                                                                                                                                  ▒
>        │                                                                                                                                                                                                                                                  ▒
>        │                                                                                                                                                                                                                                                  ▒
>        │        Disassembly of section .text:                                                                                                                                                                                                             ▒
>        │                                                                                                                                                                                                                                                  ◆
>        │        00000000012a8b97 <linemap_get_expansion_line@@Base+0x227>:                                                                                                                                                                                ▒
>        │12a8b97:   cmp     %rax,(%rdi)                                                                                                                                                                                                                    ▒
>        │12a8b9a: ↓ je      12a8ba0 <linemap_get_expansion_line@@Base+0x230>                                                                                                                                                                               ▒
>        │12a8b9c:   xor     %eax,%eax                                                                                                                                                                                                                      ▒
>        │12a8b9e: ← retq                                                                                                                                                                                                                                   ▒
>        │12a8b9f:   nop                                                                                                                                                                                                                                    ▒
>        │12a8ba0:   mov     0x8(%rsi),%edx
> 
> 
> 
>  See that 0x0000000000ea8b97 != 12a8b97
> 
> How can we explain that?

On another machine, in 'perf top', its ok, the same address appears on
the second line and in the first line in the disassembled code.

I'm applying the patch,

- Arnaldo

  reply	other threads:[~2020-03-18 15:44 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-27  4:39 [PATCH v5 0/3] perf report: Support annotation of code without symbols Jin Yao
2020-02-27  4:39 ` [PATCH v5 1/3] perf util: Print al_addr when symbol is not found Jin Yao
2020-04-04  8:42   ` [tip: perf/urgent] perf report: " tip-bot2 for Jin Yao
2020-02-27  4:39 ` [PATCH v5 2/3] perf report: Support interactive annotation of code without symbols Jin Yao
2020-03-18 15:42   ` Arnaldo Carvalho de Melo
2020-03-18 15:43     ` Arnaldo Carvalho de Melo [this message]
2020-03-18 15:46       ` Arnaldo Carvalho de Melo
2020-03-19  1:11         ` Jin, Yao
2020-03-19  0:56       ` Jin, Yao
2020-03-19  0:49     ` Jin, Yao
2020-04-04  8:42   ` [tip: perf/urgent] " tip-bot2 for Jin Yao
2020-02-27  4:39 ` [PATCH v5 3/3] perf report: Support hotkey 'a' on address for annotation Jin Yao
2020-04-04  8:42   ` [tip: perf/urgent] perf report/top TUI: Support hotkey 'a' for annotation of unresolved addresses tip-bot2 for Jin Yao
2020-03-02  4:08 ` [PATCH v5 0/3] perf report: Support annotation of code without symbols Ravi Bangoria
2020-03-02 12:51 ` Jiri Olsa

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=20200318154358.GH11531@kernel.org \
    --to=arnaldo.melo@gmail.com \
    --cc=Linux-kernel@vger.kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@intel.com \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=yao.jin@intel.com \
    --cc=yao.jin@linux.intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).