2016-10-24 16:22:00

by Namhyung Kim

[permalink] [raw]
Subject: [PATCH] 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.

Reported-by: Markus Trippelsdorf <[email protected]>
Signed-off-by: Namhyung Kim <[email protected]>
---
tools/perf/ui/browsers/hists.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index 7ed67860b423..344f95719f72 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -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);
}
--
2.10.1


2016-10-24 17:00:46

by Markus Trippelsdorf

[permalink] [raw]
Subject: Re: [PATCH] perf hist browser: Fix hierarchy column counts

On 2016.10.25 at 01:21 +0900, Namhyung Kim wrote:
> 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.

--
Markus

2016-10-24 19:38:17

by Markus Trippelsdorf

[permalink] [raw]
Subject: Re: [PATCH] perf hist browser: Fix hierarchy column counts

On 2016.10.24 at 19:00 +0200, Markus Trippelsdorf wrote:
> On 2016.10.25 at 01:21 +0900, Namhyung Kim wrote:
> > 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.

It might be a good idea to keep the + and - signs on the left hand side
when scrolling horizontally like "perf report -g" does.

--
Markus

Subject: [tip:perf/core] perf 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.

Reported-and-Tested-by: Markus Trippelsdorf <[email protected]>
Signed-off-by: Namhyung Kim <[email protected]>
Tested-by: Arnaldo Carvalho de Melo <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/ui/browsers/hists.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index ddc4c3e..84f5dd2 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -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);
}

Subject: [tip:perf/urgent] perf 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.

Reported-and-Tested-by: Markus Trippelsdorf <[email protected]>
Signed-off-by: Namhyung Kim <[email protected]>
Tested-by: Arnaldo Carvalho de Melo <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/ui/browsers/hists.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index 4ffff7b..5adedc1 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -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);
}