Em Tue, Aug 16, 2016 at 12:46:57PM -0300, Arnaldo Carvalho de Melo escreveu: > Em Wed, Aug 17, 2016 at 12:41:18AM +0900, Namhyung Kim escreveu: > > Hmm.. if so, wouldn't it be better skipping the first callchain entry > > when the user-given sort key contains "sym" too (not only when it > > starts with 'sym')? > > Probably, I think, whatever causes the mentioned duplication. And do > that at all the UIs, hence the suggestion for a callchain__first_node() > or more suitably named routine where such logic would live, to be > used for all the callchain rendering interfaces.
So, it is not possible to have that callchain__first_node() one, since we're dealing with one of the "list" entries, that are in each "node", etc, we need to do that test when printing the first entry, how about this one instead? commit 83b98f4da0068a4aefe49554351f33944dfd03d1 Author: Arnaldo Carvalho de Melo <a...@redhat.com> Date: Tue Aug 16 11:36:50 2016 -0300 perf callchain: Do not repeat the hist_entry symbol as the 1st callchain entry We were getting: 2.62% [k] __d_lookup_rcu | ---__d_lookup_rcu | --2.52%--lookup_fast | --2.50%--walk_component Noticed the __d_lookup_rcu dup, elide that first entry if "sym" is in the sort order, as in the current default sort order: 2.62% [k] __d_lookup_rcu | --2.52%--lookup_fast | --2.50%--walk_component This is for --stdio, TUI being investigated. Cc: Adrian Hunter <adrian.hun...@intel.com> Cc: David Ahern <dsah...@gmail.com> Cc: Jiri Olsa <jo...@kernel.org> Cc: Linus Torvalds <torva...@linux-foundation.org> Cc: Namhyung Kim <namhy...@kernel.org> Cc: Wang Nan <wangn...@huawei.com> Link: http://lkml.kernel.org/r/20160816143628.gg20...@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <a...@redhat.com> diff --git a/tools/perf/ui/stdio/hist.c b/tools/perf/ui/stdio/hist.c index 9b65f4a6b35a..a894e35bb4d4 100644 --- a/tools/perf/ui/stdio/hist.c +++ b/tools/perf/ui/stdio/hist.c @@ -206,8 +206,7 @@ static size_t callchain__fprintf_graph(FILE *fp, struct rb_root *root, * the symbol. No need to print it otherwise it appears as * displayed twice. */ - if (!i++ && field_order == NULL && - sort_order && !prefixcmp(sort_order, "sym")) + if (!i++ && field_order == NULL && perf_hpp_list.sym) continue; if (!printed) { ret += callchain__fprintf_left_margin(fp, left_margin);