Messages in this thread | | | From | Namhyung Kim <> | Date | Thu, 22 Oct 2015 23:22:40 +0900 | Subject | Re: [RFC/PATCH 3/3] perf tools: Defaults to 'caller' callchain order only if --children is enabled |
| |
Hi Arnaldo,
On Thu, Oct 22, 2015 at 11:13 PM, Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Em Thu, Oct 22, 2015 at 03:28:50PM +0900, Namhyung Kim escreveu: >> +++ b/tools/perf/util/util.c >> @@ -19,7 +19,7 @@ >> struct callchain_param callchain_param = { >> .mode = CHAIN_GRAPH_ABS, >> .min_percent = 0.5, >> - .order = ORDER_CALLER, >> + .order = ORDER_CALLEE, >> .key = CCKEY_FUNCTION >> }; > > So, this isn't a revert of the previous default change, i.e. previously > we used CHAIN_GRAPH_REL, should we keep CHAIN_GRAPH_ABS + callee?
Yes, it's not a revert. I intentionally didn't change the print type.
> > Also you forgot to fix the docs to mention this new default, I did it > and the resulting patch, still with GRAPH_ABS follows:
This is not simple. As Brendan said, --children is default on, so users will see 'caller' ordering that's why I didn't change the doc. But I should mention it'll use 'callee' ordering when --no-chlidren. I'm about to send doc fix patch Ingo requested, so please leave this patch as is.
Thanks, Namhyung
> > From fd2dcde26d09b34fccc3c164d9fc36e662c21fc4 Mon Sep 17 00:00:00 2001 > From: Namhyung Kim <namhyung@kernel.org> > Date: Thu, 22 Oct 2015 16:45:46 +0900 > Subject: [PATCH 1/1] perf tools: Defaults to 'caller' callchain order only if > --children is enabled > > The caller callchain order is useful with --children option since it can > show 'overview' style output, but other commands which don't use > --children feature like 'perf script' or even 'perf report/top' without > --children are better to keep callee order. > > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > Acked-by: Frederic Weisbecker <fweisbec@gmail.com> > Acked-by: Brendan Gregg <brendan.d.gregg@gmail.com> > Cc: Adrian Hunter <adrian.hunter@intel.com> > Cc: Borislav Petkov <bp@suse.de> > Cc: Chandler Carruth <chandlerc@gmail.com> > Cc: David Ahern <dsahern@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/1445499946-29817-1-git-send-email-namhyung@kernel.org > [ Update 'perf report' man page ] > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > --- > tools/perf/Documentation/perf-report.txt | 2 +- > tools/perf/builtin-report.c | 2 ++ > tools/perf/builtin-top.c | 3 +++ > tools/perf/util/callchain.c | 2 ++ > tools/perf/util/callchain.h | 1 + > tools/perf/util/util.c | 2 +- > 6 files changed, 10 insertions(+), 2 deletions(-) > > diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt > index e4fdeeb51123..4ae1621f1def 100644 > --- a/tools/perf/Documentation/perf-report.txt > +++ b/tools/perf/Documentation/perf-report.txt > @@ -192,7 +192,7 @@ OPTIONS > when available. Usually more convenient to use --branch-history > for this. > > - Default: graph,0.5,caller > + Default: graph,0.5,callee > > --children:: > Accumulate callchain of children to parent entry so that then can > diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c > index 3b23b25d1589..a554906a3e03 100644 > --- a/tools/perf/builtin-report.c > +++ b/tools/perf/builtin-report.c > @@ -808,6 +808,8 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused) > > if (report.inverted_callchain) > callchain_param.order = ORDER_CALLER; > + if (symbol_conf.cumulate_callchain && !callchain_param.order_set) > + callchain_param.order = ORDER_CALLER; > > if (itrace_synth_opts.callchain && > (int)itrace_synth_opts.callchain_sz > report.max_stack) > diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c > index 6f641fd68296..be42e6eb6805 100644 > --- a/tools/perf/builtin-top.c > +++ b/tools/perf/builtin-top.c > @@ -1288,6 +1288,9 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused) > perf_hpp__cancel_cumulate(); > } > > + if (symbol_conf.cumulate_callchain && !callchain_param.order_set) > + callchain_param.order = ORDER_CALLER; > + > symbol_conf.priv_size = sizeof(struct annotation); > > symbol_conf.try_vmlinux_path = (symbol_conf.vmlinux_name == NULL); > diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c > index 773fe13ce627..a8ed80f77ff3 100644 > --- a/tools/perf/util/callchain.c > +++ b/tools/perf/util/callchain.c > @@ -51,10 +51,12 @@ static int parse_callchain_order(const char *value) > { > if (!strncmp(value, "caller", strlen(value))) { > callchain_param.order = ORDER_CALLER; > + callchain_param.order_set = true; > return 0; > } > if (!strncmp(value, "callee", strlen(value))) { > callchain_param.order = ORDER_CALLEE; > + callchain_param.order_set = true; > return 0; > } > return -1; > diff --git a/tools/perf/util/callchain.h b/tools/perf/util/callchain.h > index acee2b3cd801..0e96496567c5 100644 > --- a/tools/perf/util/callchain.h > +++ b/tools/perf/util/callchain.h > @@ -63,6 +63,7 @@ struct callchain_param { > double min_percent; > sort_chain_func_t sort; > enum chain_order order; > + bool order_set; > enum chain_key key; > bool branch_callstack; > }; > diff --git a/tools/perf/util/util.c b/tools/perf/util/util.c > index c1bf9ff210b0..cd12c25e4ea4 100644 > --- a/tools/perf/util/util.c > +++ b/tools/perf/util/util.c > @@ -19,7 +19,7 @@ > struct callchain_param callchain_param = { > .mode = CHAIN_GRAPH_ABS, > .min_percent = 0.5, > - .order = ORDER_CALLER, > + .order = ORDER_CALLEE, > .key = CCKEY_FUNCTION > }; > > -- > 2.1.0 >
-- Thanks, Namhyung
| |