aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorNamhyung Kim <namhyung@kernel.org>2013-10-30 04:05:55 -0400
committerJiri Olsa <jolsa@kernel.org>2014-06-01 08:35:07 -0400
commit1432ec342ece6a7ef78825ae3a9ba1c91686f71d (patch)
tree41a82bdc9e732dc6a5e6072cb8e6417dfba467b8 /tools
parent7c50391f536ea6ed1e75b0f4d90922a2606da3de (diff)
perf top: Add --children option
The --children option is for showing accumulated overhead (period) value as well as self overhead. It should be used with one of -g or --call-graph option. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Tested-by: Arun Sharma <asharma@fb.com> Tested-by: Rodrigo Campos <rodrigo@sdfg.com.ar> Cc: Frederic Weisbecker <fweisbec@gmail.com> Link: http://lkml.kernel.org/r/1401335910-16832-21-git-send-email-namhyung@kernel.org Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/perf/Documentation/perf-top.txt8
-rw-r--r--tools/perf/builtin-top.c7
2 files changed, 14 insertions, 1 deletions
diff --git a/tools/perf/Documentation/perf-top.txt b/tools/perf/Documentation/perf-top.txt
index dcfa54c851e9..180ae02137a5 100644
--- a/tools/perf/Documentation/perf-top.txt
+++ b/tools/perf/Documentation/perf-top.txt
@@ -119,7 +119,7 @@ Default is to monitor all CPUS.
119--fields=:: 119--fields=::
120 Specify output field - multiple keys can be specified in CSV format. 120 Specify output field - multiple keys can be specified in CSV format.
121 Following fields are available: 121 Following fields are available:
122 overhead, overhead_sys, overhead_us, sample and period. 122 overhead, overhead_sys, overhead_us, overhead_children, sample and period.
123 Also it can contain any sort key(s). 123 Also it can contain any sort key(s).
124 124
125 By default, every sort keys not specified in --field will be appended 125 By default, every sort keys not specified in --field will be appended
@@ -161,6 +161,12 @@ Default is to monitor all CPUS.
161 Setup and enable call-graph (stack chain/backtrace) recording, 161 Setup and enable call-graph (stack chain/backtrace) recording,
162 implies -g. 162 implies -g.
163 163
164--children::
165 Accumulate callchain of children to parent entry so that then can
166 show up in the output. The output will have a new "Children" column
167 and will be sorted on the data. It requires -g/--call-graph option
168 enabled.
169
164--max-stack:: 170--max-stack::
165 Set the stack depth limit when parsing the callchain, anything 171 Set the stack depth limit when parsing the callchain, anything
166 beyond the specified depth will be ignored. This is a trade-off 172 beyond the specified depth will be ignored. This is a trade-off
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index b1cb5f589ade..fea55e3fc931 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -1098,6 +1098,8 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused)
1098 OPT_CALLBACK(0, "call-graph", &top.record_opts, 1098 OPT_CALLBACK(0, "call-graph", &top.record_opts,
1099 "mode[,dump_size]", record_callchain_help, 1099 "mode[,dump_size]", record_callchain_help,
1100 &parse_callchain_opt), 1100 &parse_callchain_opt),
1101 OPT_BOOLEAN(0, "children", &symbol_conf.cumulate_callchain,
1102 "Accumulate callchains of children and show total overhead as well"),
1101 OPT_INTEGER(0, "max-stack", &top.max_stack, 1103 OPT_INTEGER(0, "max-stack", &top.max_stack,
1102 "Set the maximum stack depth when parsing the callchain. " 1104 "Set the maximum stack depth when parsing the callchain. "
1103 "Default: " __stringify(PERF_MAX_STACK_DEPTH)), 1105 "Default: " __stringify(PERF_MAX_STACK_DEPTH)),
@@ -1203,6 +1205,11 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused)
1203 1205
1204 top.sym_evsel = perf_evlist__first(top.evlist); 1206 top.sym_evsel = perf_evlist__first(top.evlist);
1205 1207
1208 if (!symbol_conf.use_callchain) {
1209 symbol_conf.cumulate_callchain = false;
1210 perf_hpp__cancel_cumulate();
1211 }
1212
1206 symbol_conf.priv_size = sizeof(struct annotation); 1213 symbol_conf.priv_size = sizeof(struct annotation);
1207 1214
1208 symbol_conf.try_vmlinux_path = (symbol_conf.vmlinux_name == NULL); 1215 symbol_conf.try_vmlinux_path = (symbol_conf.vmlinux_name == NULL);