perf hist browser: Fix hierarchy column counts
Namhyung Kim
maintainerPATCH 1/1 perf hist browser: Fix hierarchy column counts
The perf report/top on TUI supports horizontal scrolling using LEFT and RIGHT keys. But it calculate the number of columns incorrectly when hierarchy mode is enabled so that keep pressing RIGHT key can make the output disappeared. In the hierarchy mode, all sort keys are collapsed into a single column, so it needs to be applied when calculating column numbers.
--- tools/perf/ui/browsers/hists.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)
tools/perf/ui/browsers/hists.c +14 -1
@@ -2076,8 +2076,21 @@ void hist_browser__init(struct hist_browser *browser, browser->b.use_navkeypressed = true; browser->show_headers = symbol_conf.show_hist_headers; -hists__for_each_format (hists, fmt) +if (symbol_conf.report_hierarchy) { +struct perf_hpp_list_node *fmt_node; + +/* count overhead columns (in the first node) */ + fmt_node =list_first_entry (&hists->hpp_formats, + struct perf_hpp_list_node, list); +perf_hpp_list__for_each_format (&fmt_node->hpp, fmt) + ++browser->b.columns; + +/* add a single column for whole hierarchy sort keys*/ ++browser->b.columns; + }else { +hists__for_each_format (hists, fmt) + ++browser->b.columns; + }hists__reset_column_width (hists); }
Signature · 1 line
2.10.1
Quoted 6 lines · Namhyung Kim
The perf report/top on TUI supports horizontal scrolling using LEFT and RIGHT keys. But it calculate the number of columns incorrectly when hierarchy mode is enabled so that keep pressing RIGHT key can make the output disappeared. In the hierarchy mode, all sort keys are collapsed into a single column, so it needs to be applied when calculating column numbers.
Thanks, this is much better now.
But it doesn't scroll wide enough. In "perf top" when I press the RIGHT key the symbols are shown on the hard left side. In "perf top --hierarchy", when I press the RIGHT key, there are 5 empty spaces on the left hand side that should be deleted.
Signature · 1 line
Markus
Quoted 8 lines · Markus Trippelsdorf
Quoted 6 lines · Namhyung Kim
The perf report/top on TUI supports horizontal scrolling using LEFT and RIGHT keys. But it calculate the number of columns incorrectly when hierarchy mode is enabled so that keep pressing RIGHT key can make the output disappeared. In the hierarchy mode, all sort keys are collapsed into a single column, so it needs to be applied when calculating column numbers.
Quoted 6 lines
Thanks, this is much better now.
But it doesn't scroll wide enough. In "perf top" when I press the RIGHT key the symbols are shown on the hard left side. In "perf top --hierarchy", when I press the RIGHT key, there are 5 empty spaces on the left hand side that should be deleted.
It might be a good idea to keep the + and - signs on the left hand side when scrolling horizontally like "perf report -g" does.
Signature · 1 line
Markus
tip-bot for Namhyung Kim
merge botperf hist browser: Fix hierarchy column counts
Commit-ID: 8a06b0be6507f97f3aa92ca814335b8b65fd3de2 Gitweb: http://git.kernel.org/tip/8a06b0be6507f97f3aa92ca814335b8b65fd3de2 Author: Namhyung Kim <[email protected]> AuthorDate: Tue, 25 Oct 2016 01:21:10 +0900 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Tue, 25 Oct 2016 09:52:49 -0300
perf hist browser: Fix hierarchy column counts
The perf report/top on TUI supports horizontal scrolling using LEFT and RIGHT keys.
But it calculate the number of columns incorrectly when hierarchy mode is enabled so that keep pressing RIGHT key can make the output disappeared.
In the hierarchy mode, all sort keys are collapsed into a single column, so it needs to be applied when calculating column numbers.
--- tools/perf/ui/browsers/hists.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)
tools/perf/ui/browsers/hists.c +14 -1
@@ -2076,8 +2076,21 @@ void hist_browser__init(struct hist_browser *browser, browser->b.use_navkeypressed = true; browser->show_headers = symbol_conf.show_hist_headers; -hists__for_each_format (hists, fmt) +if (symbol_conf.report_hierarchy) { +struct perf_hpp_list_node *fmt_node; + +/* count overhead columns (in the first node) */ + fmt_node =list_first_entry (&hists->hpp_formats, + struct perf_hpp_list_node, list); +perf_hpp_list__for_each_format (&fmt_node->hpp, fmt) + ++browser->b.columns; + +/* add a single column for whole hierarchy sort keys*/ ++browser->b.columns; + }else { +hists__for_each_format (hists, fmt) + ++browser->b.columns; + }hists__reset_column_width (hists); }
tip-bot for Namhyung Kim
merge botperf hist browser: Fix hierarchy column counts
Commit-ID: 9cba9844547731d2f14d79485c43192ffaa37b76 Gitweb: http://git.kernel.org/tip/9cba9844547731d2f14d79485c43192ffaa37b76 Author: Namhyung Kim <[email protected]> AuthorDate: Tue, 25 Oct 2016 01:21:10 +0900 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Wed, 9 Nov 2016 11:19:28 -0300
perf hist browser: Fix hierarchy column counts
The perf report/top on TUI supports horizontal scrolling using LEFT and RIGHT keys.
But it calculate the number of columns incorrectly when hierarchy mode is enabled so that keep pressing RIGHT key can make the output disappeared.
In the hierarchy mode, all sort keys are collapsed into a single column, so it needs to be applied when calculating column numbers.
--- tools/perf/ui/browsers/hists.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)
tools/perf/ui/browsers/hists.c +14 -1
@@ -2076,8 +2076,21 @@ void hist_browser__init(struct hist_browser *browser, browser->b.use_navkeypressed = true; browser->show_headers = symbol_conf.show_hist_headers; -hists__for_each_format (hists, fmt) +if (symbol_conf.report_hierarchy) { +struct perf_hpp_list_node *fmt_node; + +/* count overhead columns (in the first node) */ + fmt_node =list_first_entry (&hists->hpp_formats, + struct perf_hpp_list_node, list); +perf_hpp_list__for_each_format (&fmt_node->hpp, fmt) + ++browser->b.columns; + +/* add a single column for whole hierarchy sort keys*/ ++browser->b.columns; + }else { +hists__for_each_format (hists, fmt) + ++browser->b.columns; + }hists__reset_column_width (hists); }