From: tip-bot for Jiri Olsa <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, paulus@samba.org, hpa@zytor.com,
mingo@kernel.org, peterz@infradead.org, acme@ghostprotocols.net,
jolsa@redhat.com, vincent.weaver@maine.edu, rostedt@goodmis.org,
tglx@linutronix.de
Subject: [tip:perf/core] perf tools: Disable user-space callchain/ stack dumps for function trace events
Date: Tue, 11 Mar 2014 05:38:43 -0700 [thread overview]
Message-ID: <tip-6bedfab68666afac1b03f8d62ee037c6ab82fbc5@git.kernel.org> (raw)
In-Reply-To: <1393775800-13524-4-git-send-email-jolsa@redhat.com>
Commit-ID: 6bedfab68666afac1b03f8d62ee037c6ab82fbc5
Gitweb: http://git.kernel.org/tip/6bedfab68666afac1b03f8d62ee037c6ab82fbc5
Author: Jiri Olsa <jolsa@redhat.com>
AuthorDate: Sun, 2 Mar 2014 16:56:40 +0100
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Tue, 11 Mar 2014 11:57:59 +0100
perf tools: Disable user-space callchain/stack dumps for function trace events
User space callchains and user space stack dump were disabled
for function trace event. Mailing list discussions:
http://marc.info/?t=139302086500001&r=1&w=2
http://marc.info/?t=139301437300003&r=1&w=2
Catching up with perf and disabling user space callchains and
DWARF unwind (uses user stack dump) for function trace event.
Adding following warnings when callchains are used
for function trace event:
# perf record -g -e ftrace:function ...
Disabling user space callchains for function trace event.
...
# ./perf record --call-graph=dwarf -e ftrace:function ...
Cannot use DWARF unwind for function trace event, falling back to framepointers.
Disabling user space callchains for function trace event.
...
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Cc: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1393775800-13524-4-git-send-email-jolsa@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
tools/perf/util/evsel.c | 41 ++++++++++++++++++++++++++++++-----------
tools/perf/util/evsel.h | 18 ++++++++++++++++++
2 files changed, 48 insertions(+), 11 deletions(-)
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index adc94dd..26b67b1 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -500,6 +500,34 @@ int perf_evsel__group_desc(struct perf_evsel *evsel, char *buf, size_t size)
return ret;
}
+static void
+perf_evsel__config_callgraph(struct perf_evsel *evsel,
+ struct record_opts *opts)
+{
+ bool function = perf_evsel__is_function_event(evsel);
+ struct perf_event_attr *attr = &evsel->attr;
+
+ perf_evsel__set_sample_bit(evsel, CALLCHAIN);
+
+ if (opts->call_graph == CALLCHAIN_DWARF) {
+ if (!function) {
+ perf_evsel__set_sample_bit(evsel, REGS_USER);
+ perf_evsel__set_sample_bit(evsel, STACK_USER);
+ attr->sample_regs_user = PERF_REGS_MASK;
+ attr->sample_stack_user = opts->stack_dump_size;
+ attr->exclude_callchain_user = 1;
+ } else {
+ pr_info("Cannot use DWARF unwind for function trace event,"
+ " falling back to framepointers.\n");
+ }
+ }
+
+ if (function) {
+ pr_info("Disabling user space callchains for function trace event.\n");
+ attr->exclude_callchain_user = 1;
+ }
+}
+
/*
* The enable_on_exec/disabled value strategy:
*
@@ -595,17 +623,8 @@ void perf_evsel__config(struct perf_evsel *evsel, struct record_opts *opts)
attr->mmap_data = track;
}
- if (opts->call_graph_enabled) {
- perf_evsel__set_sample_bit(evsel, CALLCHAIN);
-
- if (opts->call_graph == CALLCHAIN_DWARF) {
- perf_evsel__set_sample_bit(evsel, REGS_USER);
- perf_evsel__set_sample_bit(evsel, STACK_USER);
- attr->sample_regs_user = PERF_REGS_MASK;
- attr->sample_stack_user = opts->stack_dump_size;
- attr->exclude_callchain_user = 1;
- }
- }
+ if (opts->call_graph_enabled)
+ perf_evsel__config_callgraph(evsel, opts);
if (target__has_cpu(&opts->target))
perf_evsel__set_sample_bit(evsel, CPU);
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
index f1b3256..0c9926c 100644
--- a/tools/perf/util/evsel.h
+++ b/tools/perf/util/evsel.h
@@ -315,6 +315,24 @@ static inline bool perf_evsel__is_group_event(struct perf_evsel *evsel)
return perf_evsel__is_group_leader(evsel) && evsel->nr_members > 1;
}
+/**
+ * perf_evsel__is_function_event - Return whether given evsel is a function
+ * trace event
+ *
+ * @evsel - evsel selector to be tested
+ *
+ * Return %true if event is function trace event
+ */
+static inline bool perf_evsel__is_function_event(struct perf_evsel *evsel)
+{
+#define FUNCTION_EVENT "ftrace:function"
+
+ return evsel->name &&
+ !strncmp(FUNCTION_EVENT, evsel->name, sizeof(FUNCTION_EVENT));
+
+#undef FUNCTION_EVENT
+}
+
struct perf_attr_details {
bool freq;
bool verbose;
next prev parent reply other threads:[~2014-03-11 12:47 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-02 15:56 [PATCH 0/3] perf: Disable user space dumps for function trace event Jiri Olsa
2014-03-02 15:56 ` [PATCH 1/3] perf: Disallow user space callchains " Jiri Olsa
2014-03-11 12:38 ` [tip:perf/core] perf: Disallow user-space callchains for function trace events tip-bot for Jiri Olsa
2014-03-02 15:56 ` [PATCH 2/3] perf: Disallow user space stack dump for function trace event Jiri Olsa
2014-03-02 16:59 ` Steven Rostedt
2014-03-11 12:38 ` [tip:perf/core] perf: Disallow user-space stack dumps for function trace events tip-bot for Jiri Olsa
2014-03-02 15:56 ` [PATCH 3/3] perf tools: Disable user space callchain/stack for function trace event Jiri Olsa
2014-03-11 12:38 ` tip-bot for Jiri Olsa [this message]
2014-03-02 16:42 ` [PATCH 0/3] perf: Disable user space dumps " 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=tip-6bedfab68666afac1b03f8d62ee037c6ab82fbc5@git.kernel.org \
--to=tipbot@zytor.com \
--cc=acme@ghostprotocols.net \
--cc=hpa@zytor.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=paulus@samba.org \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=vincent.weaver@maine.edu \
/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
Powered by JetHome