Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1254209 > unrolled thread
| Started by | Arnaldo Carvalho de Melo <acme@kernel.org> |
|---|---|
| First post | 2015-10-23 00:20 +0200 |
| Last post | 2015-10-23 10:30 +0200 |
| Articles | 3 — 2 participants |
Back to article view | Back to linux.kernel
[GIT PULL 0/8] perf/core improvements and fixes Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-10-23 00:20 +0200
[PATCH 3/8] perf top: Support call-graph display options also Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-10-23 00:20 +0200
Re: [GIT PULL 0/8] perf/core improvements and fixes Ingo Molnar <mingo@kernel.org> - 2015-10-23 10:30 +0200
| From | Arnaldo Carvalho de Melo <acme@kernel.org> |
|---|---|
| Date | 2015-10-23 00:20 +0200 |
| Subject | [GIT PULL 0/8] perf/core improvements and fixes |
| Message-ID | <qmwng-7px-7@gated-at.bofh.it> |
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit 4ba792e303e278052bb0ee60cce15d6d7dc15c7c:
Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-10-22 09:33:46 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
for you to fetch changes up to f06cff7c59b6b252d667435d7baad48687b41002:
perf annotate: Don't die() when finding an invalid config option (2015-10-22 18:10:52 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
User visible:
- The default for callchains is back to 'callee' when --children is not used,
(Namhyung Kim)
- Move the 'use_offset' option to the right place where the annotate code
expects it to be to be able to properly handle it (Namhyung Kim)
- Don't die when an unknown 'annotate' option is found in the perf config
file (usually ~/.perfconfig), just warn the user (Arnaldo Carvalho de Melo)
Infrastructure:
- Support %ps/%pS in libtraceevent (Scott Wood)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Arnaldo Carvalho de Melo (2):
perf ui tui: Register the error callbacks before initializing the widgets
perf annotate: Don't die() when finding an invalid config option
Namhyung Kim (5):
perf tools: Move callchain help messages to callchain.h
perf top: Support call-graph display options also
perf tools: Defaults to 'caller' callchain order only if --children is enabled
perf tools: Improve call graph documents and help messages
perf annotate: Fix 'annotate.use_offset' config variable usage
Scott Wood (1):
tools lib traceevent: Support %ps/%pS
tools/lib/traceevent/event-parse.c | 4 +--
tools/perf/Documentation/perf-record.txt | 9 +++++--
tools/perf/Documentation/perf-report.txt | 38 ++++++++++++++++++-----------
tools/perf/Documentation/perf-top.txt | 5 ++--
tools/perf/builtin-record.c | 11 +++------
tools/perf/builtin-report.c | 17 ++++++++++---
tools/perf/builtin-top.c | 30 +++++++++++++++++++----
tools/perf/ui/browsers/annotate.c | 8 +++---
tools/perf/ui/tui/setup.c | 8 +++---
tools/perf/util/callchain.c | 42 +++++++++++++++++++++++++++++---
tools/perf/util/callchain.h | 26 ++++++++++++++++++++
tools/perf/util/util.c | 2 +-
12 files changed, 151 insertions(+), 49 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Arnaldo Carvalho de Melo <acme@kernel.org> |
|---|---|
| Date | 2015-10-23 00:20 +0200 |
| Subject | [PATCH 3/8] perf top: Support call-graph display options also |
| Message-ID | <qmwnh-7px-31@gated-at.bofh.it> |
| In reply to | #1254209 |
From: Namhyung Kim <namhyung@kernel.org>
Currently 'perf top --call-graph' option is same as 'perf record'. But
'perf top' also need to receive display options in 'perf report'. To do
that, change parse_callchain_report_opt() to allow record options too.
Now perf top can receive display options like below:
$ perf top --call-graph
Error: option `call-graph' requires a value
Usage: perf top [<options>]
--call-graph
<mode[,dump_size],output_type,min_percent[,print_limit],call_order[,branch]>
setup and enables call-graph (stack chain/backtrace)
recording: fp dwarf lbr, output_type (graph, flat,
fractal, or none), min percent threshold, optional
print limit, callchain order, key (function or
address), add branches
$ perf top --call-graph callee,graph,fp
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
Cc: Chandler Carruth <chandlerc@gmail.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1445495330-25416-2-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Documentation/perf-top.txt | 5 +++--
tools/perf/builtin-top.c | 26 ++++++++++++++++++-----
tools/perf/util/callchain.c | 40 ++++++++++++++++++++++++++++++++---
tools/perf/util/callchain.h | 1 +
4 files changed, 62 insertions(+), 10 deletions(-)
diff --git a/tools/perf/Documentation/perf-top.txt b/tools/perf/Documentation/perf-top.txt
index f6a23eb294e7..556cec09bf50 100644
--- a/tools/perf/Documentation/perf-top.txt
+++ b/tools/perf/Documentation/perf-top.txt
@@ -160,9 +160,10 @@ Default is to monitor all CPUS.
-g::
Enables call-graph (stack chain/backtrace) recording.
---call-graph::
+--call-graph [mode,type,min[,limit],order[,key][,branch]]::
Setup and enable call-graph (stack chain/backtrace) recording,
- implies -g.
+ implies -g. See `--call-graph` section in perf-record and
+ perf-report man pages for details.
--children::
Accumulate callchain of children to parent entry so that then can
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 6f641fd68296..1de381d3f29f 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -1053,8 +1053,22 @@ callchain_opt(const struct option *opt, const char *arg, int unset)
static int
parse_callchain_opt(const struct option *opt, const char *arg, int unset)
{
- symbol_conf.use_callchain = true;
- return record_parse_callchain_opt(opt, arg, unset);
+ struct record_opts *record = (struct record_opts *)opt->value;
+
+ record->callgraph_set = true;
+ callchain_param.enabled = !unset;
+ callchain_param.record_mode = CALLCHAIN_FP;
+
+ /*
+ * --no-call-graph
+ */
+ if (unset) {
+ symbol_conf.use_callchain = false;
+ callchain_param.record_mode = CALLCHAIN_NONE;
+ return 0;
+ }
+
+ return parse_callchain_top_opt(arg);
}
static int perf_top_config(const char *var, const char *value, void *cb)
@@ -1079,6 +1093,8 @@ parse_percent_limit(const struct option *opt, const char *arg,
return 0;
}
+const char top_callchain_help[] = CALLCHAIN_RECORD_HELP ", " CALLCHAIN_REPORT_HELP;
+
int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused)
{
char errbuf[BUFSIZ];
@@ -1154,11 +1170,11 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused)
OPT_BOOLEAN('n', "show-nr-samples", &symbol_conf.show_nr_samples,
"Show a column with the number of samples"),
OPT_CALLBACK_NOOPT('g', NULL, &top.record_opts,
- NULL, "enables call-graph recording",
+ NULL, "enables call-graph recording and display",
&callchain_opt),
OPT_CALLBACK(0, "call-graph", &top.record_opts,
- "mode[,dump_size]", record_callchain_help,
- &parse_callchain_opt),
+ "mode[,dump_size],output_type,min_percent[,print_limit],call_order[,branch]",
+ top_callchain_help, &parse_callchain_opt),
OPT_BOOLEAN(0, "children", &symbol_conf.cumulate_callchain,
"Accumulate callchains of children and show total overhead as well"),
OPT_INTEGER(0, "max-stack", &top.max_stack,
diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c
index 773fe13ce627..842be32899ee 100644
--- a/tools/perf/util/callchain.c
+++ b/tools/perf/util/callchain.c
@@ -77,12 +77,14 @@ static int parse_callchain_sort_key(const char *value)
return -1;
}
-int
-parse_callchain_report_opt(const char *arg)
+static int
+__parse_callchain_report_opt(const char *arg, bool allow_record_opt)
{
char *tok;
char *endptr;
bool minpcnt_set = false;
+ bool record_opt_set = false;
+ bool try_stack_size = false;
symbol_conf.use_callchain = true;
@@ -100,6 +102,28 @@ parse_callchain_report_opt(const char *arg)
!parse_callchain_order(tok) ||
!parse_callchain_sort_key(tok)) {
/* parsing ok - move on to the next */
+ try_stack_size = false;
+ goto next;
+ } else if (allow_record_opt && !record_opt_set) {
+ if (parse_callchain_record(tok, &callchain_param))
+ goto try_numbers;
+
+ /* assume that number followed by 'dwarf' is stack size */
+ if (callchain_param.record_mode == CALLCHAIN_DWARF)
+ try_stack_size = true;
+
+ record_opt_set = true;
+ goto next;
+ }
+
+try_numbers:
+ if (try_stack_size) {
+ unsigned long size = 0;
+
+ if (get_stack_size(tok, &size) < 0)
+ return -1;
+ callchain_param.dump_size = size;
+ try_stack_size = false;
} else if (!minpcnt_set) {
/* try to get the min percent */
callchain_param.min_percent = strtod(tok, &endptr);
@@ -112,7 +136,7 @@ parse_callchain_report_opt(const char *arg)
if (tok == endptr)
return -1;
}
-
+next:
arg = NULL;
}
@@ -123,6 +147,16 @@ parse_callchain_report_opt(const char *arg)
return 0;
}
+int parse_callchain_report_opt(const char *arg)
+{
+ return __parse_callchain_report_opt(arg, false);
+}
+
+int parse_callchain_top_opt(const char *arg)
+{
+ return __parse_callchain_report_opt(arg, true);
+}
+
int perf_callchain_config(const char *var, const char *value)
{
char *endptr;
diff --git a/tools/perf/util/callchain.h b/tools/perf/util/callchain.h
index c9e3a2e85a72..836d59a001bc 100644
--- a/tools/perf/util/callchain.h
+++ b/tools/perf/util/callchain.h
@@ -192,6 +192,7 @@ extern const char record_callchain_help[];
extern int parse_callchain_record(const char *arg, struct callchain_param *param);
int parse_callchain_record_opt(const char *arg, struct callchain_param *param);
int parse_callchain_report_opt(const char *arg);
+int parse_callchain_top_opt(const char *arg);
int perf_callchain_config(const char *var, const char *value);
static inline void callchain_cursor_snapshot(struct callchain_cursor *dest,
--
2.1.0
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Ingo Molnar <mingo@kernel.org> |
|---|---|
| Date | 2015-10-23 10:30 +0200 |
| Message-ID | <qmFTA-4ff-13@gated-at.bofh.it> |
| In reply to | #1254209 |
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > The following changes since commit 4ba792e303e278052bb0ee60cce15d6d7dc15c7c: > > Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-10-22 09:33:46 +0200) > > are available in the git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo > > for you to fetch changes up to f06cff7c59b6b252d667435d7baad48687b41002: > > perf annotate: Don't die() when finding an invalid config option (2015-10-22 18:10:52 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > User visible: > > - The default for callchains is back to 'callee' when --children is not used, > (Namhyung Kim) > > - Move the 'use_offset' option to the right place where the annotate code > expects it to be to be able to properly handle it (Namhyung Kim) > > - Don't die when an unknown 'annotate' option is found in the perf config > file (usually ~/.perfconfig), just warn the user (Arnaldo Carvalho de Melo) > > Infrastructure: > > - Support %ps/%pS in libtraceevent (Scott Wood) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Arnaldo Carvalho de Melo (2): > perf ui tui: Register the error callbacks before initializing the widgets > perf annotate: Don't die() when finding an invalid config option > > Namhyung Kim (5): > perf tools: Move callchain help messages to callchain.h > perf top: Support call-graph display options also > perf tools: Defaults to 'caller' callchain order only if --children is enabled > perf tools: Improve call graph documents and help messages > perf annotate: Fix 'annotate.use_offset' config variable usage > > Scott Wood (1): > tools lib traceevent: Support %ps/%pS > > tools/lib/traceevent/event-parse.c | 4 +-- > tools/perf/Documentation/perf-record.txt | 9 +++++-- > tools/perf/Documentation/perf-report.txt | 38 ++++++++++++++++++----------- > tools/perf/Documentation/perf-top.txt | 5 ++-- > tools/perf/builtin-record.c | 11 +++------ > tools/perf/builtin-report.c | 17 ++++++++++--- > tools/perf/builtin-top.c | 30 +++++++++++++++++++---- > tools/perf/ui/browsers/annotate.c | 8 +++--- > tools/perf/ui/tui/setup.c | 8 +++--- > tools/perf/util/callchain.c | 42 +++++++++++++++++++++++++++++--- > tools/perf/util/callchain.h | 26 ++++++++++++++++++++ > tools/perf/util/util.c | 2 +- > 12 files changed, 151 insertions(+), 49 deletions(-) Pulled, thanks a lot Arnaldo! Ingo -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web