[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120130044242.2384.23076.stgit@linux3>
Date: Mon, 30 Jan 2012 13:42:42 +0900
From: Akihiro Nagai <akihiro.nagai.hw@...achi.com>
To: Arnaldo Carvalho de Melo <acme@...radead.org>,
Ingo Molnar <mingo@...e.hu>,
Peter Zijlstra <peterz@...radead.org>,
Frederic Weisbecker <fweisbec@...il.com>,
David Ahern <dsahern@...il.com>
Cc: linux-kernel@...r.kernel.org,
Masami Hiramatsu <masami.hiramatsu.pt@...achi.com>,
yrl.pp-manager.tt@...achi.com
Subject: [PATCH -tip v5 0/5] perf script: add BTS analysis features
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@...+0x0 (/root/bin/ls)
401e20 strrchr@...+0x0 (/root/bin/ls) => 401e26 strrchr@...+0x6 (/root/bin/ls)
401e2b strrchr@...+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@...achi.com)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists