All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Olsa <jolsa@redhat.com>
To: Andi Kleen <andi@firstfloor.org>
Cc: acme@infradead.org, namhyung@kernel.org, mingo@kernel.org,
	dsahern@gmail.com, fweisbec@gmail.com, adrian.hunter@intel.com,
	linux-kernel@vger.kernel.org
Subject: Re: Implement lbr-as-callgraph v3
Date: Wed, 15 Jan 2014 14:59:26 +0100	[thread overview]
Message-ID: <20140115135926.GD8350@krava.redhat.com> (raw)
In-Reply-To: <1389661461-18996-1-git-send-email-andi@firstfloor.org>

On Mon, Jan 13, 2014 at 05:04:15PM -0800, Andi Kleen wrote:
> This patchkit implements lbr-as-callgraphs in per freport,
> as an alternative way to present LBR information.
> 
> Current perf report does a histogram over the branch edges,
> which is useful to look at basic blocks, but doesn't tell
> you anything about the larger control flow behaviour.
> 
> This patchkit adds a new option --branch-history that
> adds the branch paths to the callgraph history instead.
> 
> This allows to reason about individual branch paths leading
> to specific samples.
> 
> Updates to v1:
> - rebased on perf/core
> - fix various issues
> - rename the option to --branch-history
> - various fixes to display the information more concise
> 
> Updates to v3:
> - White space changes
> - Consolidate some patches
> - Update some descriptions
> 
> Example output:
> 
>     % perf record -b -g ./tsrc/tcall
>     [ perf record: Woken up 1 times to write data ]
>     [ perf record: Captured and wrote 0.044 MB perf.data (~1923 samples) ]
>     % perf report --branch-history
>     ...
>         54.91%  tcall.c:6  [.] f2                      tcall
>                 |
>                 |--65.53%-- f2 tcall.c:5
>                 |          |
>                 |          |--70.83%-- f1 tcall.c:11
>                 |          |          f1 tcall.c:10
>                 |          |          main tcall.c:18
>                 |          |          main tcall.c:18
>                 |          |          main tcall.c:17
>                 |          |          main tcall.c:17
>                 |          |          f1 tcall.c:13
>                 |          |          f1 tcall.c:13
>                 |          |          f2 tcall.c:7
>                 |          |          f2 tcall.c:5
>                 |          |          f1 tcall.c:12
>                 |          |          f1 tcall.c:12
>                 |          |          f2 tcall.c:7
>                 |          |          f2 tcall.c:5
>                 |          |          f1 tcall.c:11
> 
> 

the tui output needs some cleanup:

+  26.38%  :0  [.] _IO_file_xsputn@@GLIBC_2.2.5    libc-2.17.so                                                                           ◆
+  20.43%  :0  [.] __strlen_sse2                   libc-2.17.so                                                                           ▒
+  15.94%  yes.c:83  [.] main                            yes                                                                              ▒
+  12.16%  :0  [.] fputs_unlocked                  libc-2.17.so                                                                           ▒
+  10.27%  stdio.h:107  [.] main                            yes                                                                           ▒
+  10.09%  :0  [.] __GI___mempcpy                  libc-2.17.so                                                                           ▒
+   2.63%  yes.c:84  [.] main                            yes                                                                              ▒
+   1.71%  yes[4012f0]  [.] fputs_unlocked@plt              yes                                                                           ▒
+   0.25%  yes.c:85  [.] main                            yes                                                                              ▒
+   0.03%  [kernel.kallsyms][ffffffff81757eb0]  [k] system_call                     [kernel.kallsyms]                                     ▒
+   0.02%  :0  [.] _IO_file_write@@GLIBC_2.2.5     libc-2.17.so                                                                           ▒
+   0.02%  :0  [.] _IO_do_write@@GLIBC_2.2.5       libc-2.17.so                                                                           ▒
+   0.02%  [kernel.kallsyms][ffffffff81758b40]  [k] apic_timer_interrupt            [kernel.kallsyms]                                     ▒
+   0.02%  :0  [.] _IO_default_xsputn              libc-2.17.so                                                                           ▒
+   0.01%  :0  [.] _IO_file_overflow@@GLIBC_2.2.5  libc-2.17.so                                                                           ▒
+   0.01%  :0  [.] __GI___libc_write               libc-2.17.so                                                                           ▒
+   0.00%  [kernel.kallsyms][ffffffff8174f020]  [k] page_fault                      [kernel.kallsyms]                                     ▒
+   0.00%  :0  [.] getenv                          libc-2.17.so                                                                           ▒
+   0.00%  :0  [.] _nl_load_locale_from_archive    libc-2.17.so                                                                           ▒
+   0.00%  ld-2.17.so[3407c0af52]  [.] _dl_setup_hash                  ld-2.17.so                                                         ▒
+   0.00%  ld-2.17.so[3407c01420]  [.] _start                          ld-2.17.so                      


when we cannot get source and line number we could output address not ':0':

-   2.63%  yes.c:84  [.] main                            yes                                                                              ▒
   - main stdio.h:107                                                                                                                     ▒
   - main yes.c:84                                                                                                                        ▒
   - main yes.c:84                                                                                                                        ▒
   - fputs_unlocked :0                                                                                                                    ▒
   - fputs_unlocked :0                                                                                                                    ▒
   - _IO_file_xsputn@@GLIBC_2.2.5 :0                                                                                                      ▒
      - 99.78% _IO_file_xsputn@@GLIBC_2.2.5 :0                                                                                            ▒
           __GI___mempcpy :0                                                                                                              ▒
           __GI___mempcpy :0                                                                                                              ▒
           __GI___mempcpy :0                                                                                                              ▒
           __GI___mempcpy :0                                         


at some samples I could not get see  source/address info, just:

     0.03%  [kernel.kallsyms][ffffffff810a7b4f]  [k] __srcu_read_lock                [kernel.kallsyms]
            |
            --- __srcu_read_lock
                fsnotify
                fsnotify
                fsnotify
                fsnotify
                fsnotify
                fsnotify
                fsnotify
                fsnotify

going to check the patches now ;-)

jirka

      parent reply	other threads:[~2014-01-15 14:00 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-14  1:04 Implement lbr-as-callgraph v3 Andi Kleen
2014-01-14  1:04 ` [PATCH 1/6] perf, tools: fix BFD detection on opensuse Andi Kleen
2014-01-14  1:04 ` [PATCH 2/6] perf, tools: Support handling complete branch stacks as histograms v3 Andi Kleen
2014-01-15 14:48   ` Jiri Olsa
2014-01-15 15:27     ` Andi Kleen
2014-01-15 15:45       ` Jiri Olsa
2014-01-15 15:00   ` Jiri Olsa
2014-01-14  1:04 ` [PATCH 3/6] perf, tools: Add --branch-history option to report v2 Andi Kleen
2014-01-15 14:44   ` Jiri Olsa
2014-01-15 15:23     ` Andi Kleen
2014-01-15 15:42       ` Jiri Olsa
2014-01-14  1:04 ` [PATCH 4/6] perf, tools: Enable printing the srcline in the history Andi Kleen
2014-01-15 15:12   ` Jiri Olsa
2014-01-14  1:04 ` [PATCH 5/6] perf, tools: Only print base source file for srcline Andi Kleen
2014-01-14  1:04 ` [PATCH 6/6] perf, tools: Support source line numbers in annotate Andi Kleen
2014-01-15 13:59 ` Jiri Olsa [this message]

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=20140115135926.GD8350@krava.redhat.com \
    --to=jolsa@redhat.com \
    --cc=acme@infradead.org \
    --cc=adrian.hunter@intel.com \
    --cc=andi@firstfloor.org \
    --cc=dsahern@gmail.com \
    --cc=fweisbec@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --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.