From: Andi Kleen <andi@firstfloor.org>
To: acme@infradead.org
Cc: linux-kernel@vger.kernel.org, namhyung@kernel.org,
eranian@google.com, jolsa@redhat.com, fweisbec@gmail.com,
mingo@kernel.org, adrian.hunter@intel.com, dsahern@gmail.com,
Andi Kleen <ak@linux.intel.com>
Subject: [PATCH 2/4] perf, tools: Add --branch-call-stack option to report
Date: Fri, 10 Jan 2014 04:32:04 -0800 [thread overview]
Message-ID: <1389357126-3003-2-git-send-email-andi@firstfloor.org> (raw)
In-Reply-To: <1389357126-3003-1-git-send-email-andi@firstfloor.org>
From: Andi Kleen <ak@linux.intel.com>
Add a --branch-call-stack option toperf report that changes all
the settings necessary for using the branches in callstacks.
This is just a short cut to make this nicer to use.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
tools/perf/Documentation/perf-report.txt | 5 +++++
tools/perf/builtin-report.c | 25 ++++++++++++++++++++++---
2 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt
index 10a2798..77ec0b9 100644
--- a/tools/perf/Documentation/perf-report.txt
+++ b/tools/perf/Documentation/perf-report.txt
@@ -223,6 +223,11 @@ OPTIONS
branch stacks and it will automatically switch to the branch view mode,
unless --no-branch-stack is used.
+--branch-call-stack::
+ Add the addresses of sampled taken branches to the callstack.
+ This allows to examine the path the program took to each sample.
+ The data collection must have used -b or -j.
+
--objdump=<path>::
Path to objdump binary.
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index c2e6e43..c39d1ac 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -763,6 +763,16 @@ parse_branch_mode(const struct option *opt __maybe_unused,
}
static int
+parse_branch_call_mode(const struct option *opt __maybe_unused,
+ const char *str __maybe_unused, int unset)
+{
+ int *branch_mode = opt->value;
+
+ *branch_mode = !unset;
+ return 0;
+}
+
+static int
parse_percent_limit(const struct option *opt, const char *str,
int unset __maybe_unused)
{
@@ -777,7 +787,7 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
struct perf_session *session;
struct stat st;
bool has_br_stack = false;
- int branch_mode = -1;
+ int branch_mode = -1, branch_call_mode = -1;
int ret = -1;
char callchain_default_opt[] = "fractal,0.5,callee";
const char * const report_usage[] = {
@@ -883,7 +893,10 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
OPT_BOOLEAN(0, "group", &symbol_conf.event_group,
"Show event group information together"),
OPT_CALLBACK_NOOPT('b', "branch-stack", &branch_mode, "",
- "use branch records for histogram filling", parse_branch_mode),
+ "use branch records for per branch histogram filling", parse_branch_mode),
+ OPT_CALLBACK_NOOPT(0, "branch-call-stack", &branch_call_mode, "",
+ "add last branch records to call stack",
+ parse_branch_call_mode),
OPT_STRING(0, "objdump", &objdump_path, "path",
"objdump binary to use for disassembly and annotations"),
OPT_BOOLEAN(0, "demangle", &symbol_conf.demangle,
@@ -931,8 +944,14 @@ repeat:
has_br_stack = perf_header__has_feat(&session->header,
HEADER_BRANCH_STACK);
- if (branch_mode == -1 && has_br_stack)
+ if (branch_mode == -1 && has_br_stack && branch_call_mode == -1)
sort__mode = SORT_MODE__BRANCH;
+ if (branch_call_mode != -1) {
+ callchain_param.branch_callstack = 1;
+ callchain_param.key = CCKEY_ADDRESS;
+ symbol_conf.use_callchain = true;
+ callchain_register_param(&callchain_param);
+ }
/* sort__mode could be NORMAL if --no-branch-stack */
if (sort__mode == SORT_MODE__BRANCH) {
--
1.8.3.1
next prev parent reply other threads:[~2014-01-10 12:32 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-10 12:32 [PATCH 1/4] perf, tools: Add support for prepending LBRs to the callstack Andi Kleen
2014-01-10 12:32 ` Andi Kleen [this message]
2014-01-10 12:32 ` [PATCH 3/4] perf, tools: Filter out small loops from LBR-as-call-stack Andi Kleen
2014-01-10 12:32 ` [PATCH 4/4] perf, tools: Enable printing the srcline in the history Andi Kleen
2014-01-11 15:36 ` [PATCH 1/4] perf, tools: Add support for prepending LBRs to the callstack Jiri Olsa
2014-01-11 17:58 ` Andi Kleen
2014-01-11 19:16 ` Arnaldo Carvalho de Melo
2014-01-11 19:18 ` Arnaldo Carvalho de Melo
2014-01-11 19:30 ` Andi Kleen
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=1389357126-3003-2-git-send-email-andi@firstfloor.org \
--to=andi@firstfloor.org \
--cc=acme@infradead.org \
--cc=adrian.hunter@intel.com \
--cc=ak@linux.intel.com \
--cc=dsahern@gmail.com \
--cc=eranian@google.com \
--cc=fweisbec@gmail.com \
--cc=jolsa@redhat.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.