[PATCH 20/22] perf ui/tui: Reset output width for hierarchy

From: Arnaldo Carvalho de Melo
Date: Tue Sep 20 2016 - 16:07:48 EST


From: Namhyung Kim <namhyung@xxxxxxxxxx>

When --hierarchy option is used, each entry has its own hpp_list to show
the result. But it missed to update width of each column.

Before:

- 46.29% 48.12% netctl-auto
+ 31.44% 29.25% [kernel.vmlinux]
+ 8.52% 11.55% libc-2.22.so
+ 5.19% 6.91% bash
+ 10.75% 11.83% wpa_cli
+ 8.25% 2.23% swapper
+ 6.45% 5.40% tr
+ 4.81% 8.09% awk
+ 4.15% 2.85% firefox
+ 3.86% 2.53% sh

After:

- 46.29% 48.12% netctl-auto
+ 31.44% 29.25% [kernel.vmlinux]
+ 8.52% 11.55% libc-2.22.so
+ 5.19% 6.91% bash
+ 10.75% 11.83% wpa_cli
+ 8.25% 2.23% swapper
+ 6.45% 5.40% tr
+ 4.81% 8.09% awk
+ 4.15% 2.85% firefox
+ 3.86% 2.53% sh

Committer note:

Full testing instructions:

1) Record with an event group:

$ perf record -e '{cycles,instructions}' make -j4

2) Use report in hierarchy mode, to get a few expanded trees on
the same screen, use --percent-limit:

$ perf report --hierarchy --percent-limit 0.5

Samples: 103K of event 'anon group { cycles:u, instructions:u }',
Event count (approx.): 57317631725
Overhead Command / Shared Object / Symbol â
- 58.89% 55.12% cc1 â
- 50.26% 48.10% cc1 â
3.61% 5.13% [.] _cpp_lex_token â
2.58% 0.78% [.] ht_lookup_with_hash â
1.31% 1.30% [.] ggc_internal_alloc â
1.08% 2.25% [.] get_combined_adhoc_loc â
1.01% 1.95% [.] ira_init â
0.96% 1.78% [.] linemap_position_for_column â
0.65% 1.01% [.] cpp_get_token_with_location â
- 7.52% 6.58% libc-2.23.so â
1.70% 1.78% [.] _int_malloc â
0.69% 0.75% [.] _int_free â
0.67% 0.42% [.] malloc_consolidate â
- 0.58% 0.42% ld-2.23.so â
no entry >= 0.50% â
- 0.52% 0.03% [kernel.vmlinux] â
no entry >= 0.50% â

Signed-off-by: Namhyung Kim <namhyung@xxxxxxxxxx>
Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx>
Cc: Andi Kleen <andi@xxxxxxxxxxxxxx>
Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Fixes: 1b2dbbf41a0f ("perf hists: Use own hpp_list for hierarchy mode")
Link: http://lkml.kernel.org/r/20160920053025.13989-1-namhyung@xxxxxxxxxx
Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
---
tools/perf/ui/browsers/hists.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index 35e44b1879e3..49db16334814 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -2067,6 +2067,7 @@ void hist_browser__init(struct hist_browser *browser,
struct hists *hists)
{
struct perf_hpp_fmt *fmt;
+ struct perf_hpp_list_node *node;

browser->hists = hists;
browser->b.refresh = hist_browser__refresh;
@@ -2079,6 +2080,11 @@ void hist_browser__init(struct hist_browser *browser,
perf_hpp__reset_width(fmt, hists);
++browser->b.columns;
}
+ /* hierarchy entries have their own hpp list */
+ list_for_each_entry(node, &hists->hpp_formats, list) {
+ perf_hpp_list__for_each_format(&node->hpp, fmt)
+ perf_hpp__reset_width(fmt, hists);
+ }
}

struct hist_browser *hist_browser__new(struct hists *hists)
--
2.7.4