From: Akihiro Nagai <akihiro.nagai.hw@hitachi.com>
To: Arnaldo Carvalho de Melo <acme@infradead.org>,
Ingo Molnar <mingo@elte.hu>,
Peter Zijlstra <peterz@infradead.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
David Ahern <dsahern@gmail.com>
Cc: linux-kernel@vger.kernel.org,
Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>,
yrl.pp-manager.tt@hitachi.com
Subject: [PATCH -tip v5 0/5] perf script: add BTS analysis features
Date: Mon, 30 Jan 2012 13:42:42 +0900 [thread overview]
Message-ID: <20120130044242.2384.23076.stgit@linux3> (raw)
Hi Frederic, David,
This patch series adds the functions to analyze BTS logs to perf-script and,
makes perf-script more informative version 5.
The patches add the following functions.
- Unify the expression to "[unknown]"
- Fix BTS record header to resolve DSOs and symbols of user-space
- Resolve DSOs and symbols for BTS's branch_from addresses
- Show the offset of symbols with the 'symoff' field specifier.
- Resolve the real path of [kernel.kallsym] using
'--show-kernel-path' option.
Usage:
First, get the BTS log with the following command.
# perf record -e branches:u -c 1 -d <command>
Second, analyze that trace data.
# perf script -f ip,addr,sym,symoff,dso [--show-kernel-path]
This command's output format is:
<branch_from addr> <branch_from function+offset> <branch_from DSO> => <branch_to addr> <branch_to function+offset> <branch_to DSO>
Output sample:
# perf record -e branches:u -c 1 -d ls
[snip]
# perf script -f ip,addr,sym,dso,symoff --show-kernel-path
[snip]
3430c21399 __libc_start_main+0xe9 (/lib64/libc-2.14.so) => 402c1c main+0x0 (/root/bin/ls)
402c41 main+0x25 (/root/bin/ls) => 40b390 set_program_name+0x0 (/root/bin/ls)
ffffffff814ac5ed irq_return+0x0 (/lib/modules/3.2.0+/build/vmlinux) => 40b390 set_program_name+0x0 (/root/bin/ls)
40b39e set_program_name+0xe (/root/bin/ls) => 401e20 strrchr@plt+0x0 (/root/bin/ls)
401e20 strrchr@plt+0x0 (/root/bin/ls) => 401e26 strrchr@plt+0x6 (/root/bin/ls)
401e2b strrchr@plt+0xb (/root/bin/ls) => 401b80 _init+0x18 (/root/bin/ls)
401b86 _init+0x1e (/root/bin/ls) => 3430813850 _dl_runtime_resolve+0x0 (/lib64/ld-2.14.so)
[snip]
It shows the tracee application's execution path.
Future Works:
- add source code path field, line number field ...etc.
- add record/report script to use easily and, show human-friendly output.
- filtering kernel functions using scripts
Changes in v5:
- Use fprintf() instead of printf() in struct map/symbol's functions
to print something.
- Abolish using 'self' in function's paramater
e.g. map__print_dsoname(self) => map__fprintf_dsoname(map, fp)
- Change the specifier to print symbol_offset 'offs' to 'symoff'
- Change the output format "<branch_to> <branch_from>" to
"<branch_from> => <branch_to>"
Changes in v4:
- add check routine to set correct perf_sample's header.
Changes in v3:
- remove the bug fix patch already fixed.
- unify the "[unknown]" expressions in perf-script.
- fix perf_event_header of BTS events.
- fix patch's descriptions
Changes in v2:
- add a bug fix patch that prints correct IP address
- output the magic word "(unknown)" as symbol name when perf-script can't
resolve symbols.
- output "[unknown]" as DSO name when perf-script can't resolve DSO path.
- change the way to output offset of symbols from '--show-symbol-offset' to
'offs' field.
- clean up codes.
Thanks,
---
Akihiro Nagai (5):
perf script: add option resolving vmlinux path
perf script: add the offset field specifier
perf script: print branch_from and branch_to of BTS events
perf: set correct value to perf_event_header.misc for BTS
perf-script: unify the expressions indicate "unknown"
arch/x86/kernel/cpu/perf_event_intel_ds.c | 31 +++++++----
tools/perf/Documentation/perf-script.txt | 5 +-
tools/perf/builtin-script.c | 80 ++++++++++++++++++++++++-----
tools/perf/util/map.c | 15 +++++
tools/perf/util/map.h | 1
tools/perf/util/session.c | 39 +++++---------
tools/perf/util/session.h | 2 -
tools/perf/util/symbol.c | 22 ++++++++
tools/perf/util/symbol.h | 4 +
9 files changed, 147 insertions(+), 52 deletions(-)
--
Akihiro Nagai (akihiro.nagai.hw@hitachi.com)
next reply other threads:[~2012-01-30 4:44 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-30 4:42 Akihiro Nagai [this message]
2012-01-30 4:42 ` [PATCH -tip v5 1/5] perf-script: unify the expressions indicate "unknown" Akihiro Nagai
2012-01-31 13:17 ` [tip:perf/core] perf script: Unify the expressions indicating " unknown" tip-bot for Akihiro Nagai
2012-01-30 4:43 ` [PATCH -tip v5 2/5] perf: set correct value to perf_event_header.misc for BTS Akihiro Nagai
2012-01-30 9:35 ` Peter Zijlstra
2012-02-21 5:39 ` Akihiro Nagai
2012-03-06 17:32 ` Peter Zijlstra
2012-03-16 2:22 ` Akihiro Nagai
2012-01-30 4:43 ` [PATCH -tip v5 3/5] perf script: print branch_from and branch_to of BTS events Akihiro Nagai
2012-01-31 13:18 ` [tip:perf/core] perf script: Print " tip-bot for Akihiro Nagai
2012-01-30 4:43 ` [PATCH -tip v5 4/5] perf script: add the offset field specifier Akihiro Nagai
2012-01-31 13:19 ` [tip:perf/core] perf script: Add " tip-bot for Akihiro Nagai
2012-01-30 4:43 ` [PATCH -tip v5 5/5] perf script: add option resolving vmlinux path Akihiro Nagai
2012-01-31 13:20 ` [tip:perf/core] perf script: Add " tip-bot for Akihiro Nagai
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=20120130044242.2384.23076.stgit@linux3 \
--to=akihiro.nagai.hw@hitachi.com \
--cc=acme@infradead.org \
--cc=dsahern@gmail.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=yrl.pp-manager.tt@hitachi.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.