All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC 0/3] perf tools: Make perf_hpp__init respect output dimensions
@ 2015-10-06 12:25 Jiri Olsa
  2015-10-06 12:25 ` [PATCH 1/3] perf tools: Get rid of superfluos call to reset_dimensions Jiri Olsa
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Jiri Olsa @ 2015-10-06 12:25 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: lkml, David Ahern, Ingo Molnar, Namhyung Kim, Peter Zijlstra

hi,
The perf_hpp__init currently does not respect sorting dimensions
and the setup_sorting function could endup queueing same format
twice. That screwed up the perf_hpp__list and got stuck in loop
within perf_hpp__setup_output_field function.

  $ perf report -F +overhead

  0x00000000004c1355 in perf_hpp__is_sort_entry (format=format@entry=0x880440 <perf_hpp.format>) at util/sort.c:1506
  1506    {

     #0  0x00000000004c1355 in perf_hpp__is_sort_entry (format=format@entry=0x880440 <perf_hpp.format>) at util/sort.c:1506
     #1  0x00000000004c139d in perf_hpp__same_sort_entry (a=a@entry=0x880440 <perf_hpp.format>, b=b@entry=0x2bb2fe0) at util/sort.c:1380
     #2  0x00000000004f8d3c in perf_hpp__setup_output_field () at ui/hist.c:554
     #3  0x00000000004c1d1e in setup_sorting () at util/sort.c:1984
     #4  0x000000000042efbf in cmd_report (argc=0, argv=0x7ffea5a0e790, prefix=<optimized out>) at builtin-report.c:874
     #5  0x0000000000476f13 in run_builtin (p=p@entry=0x875628 <commands+168>, argc=argc@entry=3, argv=argv@entry=0x7ffea5a0e790) at perf.c:385
     #6  0x000000000047710b in handle_internal_command (argc=3, argv=0x7ffea5a0e790) at perf.c:445
     #7  0x0000000000477176 in run_argv (argcp=argcp@entry=0x7ffea5a0e5fc, argv=argv@entry=0x7ffea5a0e5f0) at perf.c:489
     #8  0x00000000004773e7 in main (argc=3, argv=0x7ffea5a0e790) at perf.c:606

Using hpp_dimension__add_output function to register
the output column. It will also mark the dimension
as taken and omit above stuck.

It might need some other changes.. not sure, Namhyung? ;-)

Available in:
  git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
  perf/cols

thanks,
jirka


---
Jiri Olsa (3):
      perf tools: Get rid of superfluos call to reset_dimensions
      perf tools: Introduce hpp_dimension__add_output function
      perf tools: Use hpp_dimension__add_output to register hpp columns

 tools/perf/ui/hist.c   | 16 ++++++++--------
 tools/perf/util/sort.c |  8 ++++++--
 tools/perf/util/sort.h |  2 ++
 3 files changed, 16 insertions(+), 10 deletions(-)

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/3] perf tools: Get rid of superfluos call to reset_dimensions
  2015-10-06 12:25 [RFC 0/3] perf tools: Make perf_hpp__init respect output dimensions Jiri Olsa
@ 2015-10-06 12:25 ` Jiri Olsa
  2015-10-08  9:45   ` [tip:perf/core] " tip-bot for Jiri Olsa
  2015-10-06 12:25 ` [PATCH 2/3] perf tools: Introduce hpp_dimension__add_output function Jiri Olsa
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 10+ messages in thread
From: Jiri Olsa @ 2015-10-06 12:25 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: lkml, David Ahern, Ingo Molnar, Namhyung Kim, Peter Zijlstra

There's no need to call reset_dimensions within __setup_output_field
function. It's already called in its caller setup_sorting right
before perf_hpp__init, which will be changed in following patch
to respect taken dimension.

Link: http://lkml.kernel.org/n/tip-08mxvkxtuxbboog1exjok9gd@git.kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
 tools/perf/util/sort.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index ee94b728fca4..8521e3c89b8d 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -1917,8 +1917,6 @@ static int __setup_output_field(void)
 	if (field_order == NULL)
 		return 0;
 
-	reset_dimensions();
-
 	strp = str = strdup(field_order);
 	if (str == NULL) {
 		error("Not enough memory to setup output fields");
-- 
2.4.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/3] perf tools: Introduce hpp_dimension__add_output function
  2015-10-06 12:25 [RFC 0/3] perf tools: Make perf_hpp__init respect output dimensions Jiri Olsa
  2015-10-06 12:25 ` [PATCH 1/3] perf tools: Get rid of superfluos call to reset_dimensions Jiri Olsa
@ 2015-10-06 12:25 ` Jiri Olsa
  2015-10-08  9:46   ` [tip:perf/core] " tip-bot for Jiri Olsa
  2015-10-06 12:25 ` [PATCH 3/3] perf tools: Use hpp_dimension__add_output to register hpp columns Jiri Olsa
  2015-10-06 14:04 ` [RFC 0/3] perf tools: Make perf_hpp__init respect output dimensions Namhyung Kim
  3 siblings, 1 reply; 10+ messages in thread
From: Jiri Olsa @ 2015-10-06 12:25 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: lkml, David Ahern, Ingo Molnar, Namhyung Kim, Peter Zijlstra

This function will allow to register output column from ui
code and respect taken sort/output dimensions.

Link: http://lkml.kernel.org/n/tip-mzlrgdrqs2tciq65bp8ys8jz@git.kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
 tools/perf/util/sort.c | 6 ++++++
 tools/perf/util/sort.h | 2 ++
 2 files changed, 8 insertions(+)

diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 8521e3c89b8d..2d8ccd4d9e1b 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -1577,6 +1577,12 @@ static int __hpp_dimension__add_output(struct hpp_dimension *hd)
 	return 0;
 }
 
+int hpp_dimension__add_output(unsigned col)
+{
+	BUG_ON(col >= PERF_HPP__MAX_INDEX);
+	return __hpp_dimension__add_output(&hpp_sort_dimensions[col]);
+}
+
 int sort_dimension__add(const char *tok)
 {
 	unsigned int i;
diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h
index 33b3d30e18d3..31228851e397 100644
--- a/tools/perf/util/sort.h
+++ b/tools/perf/util/sort.h
@@ -234,4 +234,6 @@ void perf_hpp__set_elide(int idx, bool elide);
 int report_parse_ignore_callees_opt(const struct option *opt, const char *arg, int unset);
 
 bool is_strict_order(const char *order);
+
+int hpp_dimension__add_output(unsigned col);
 #endif	/* __PERF_SORT_H */
-- 
2.4.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 3/3] perf tools: Use hpp_dimension__add_output to register hpp columns
  2015-10-06 12:25 [RFC 0/3] perf tools: Make perf_hpp__init respect output dimensions Jiri Olsa
  2015-10-06 12:25 ` [PATCH 1/3] perf tools: Get rid of superfluos call to reset_dimensions Jiri Olsa
  2015-10-06 12:25 ` [PATCH 2/3] perf tools: Introduce hpp_dimension__add_output function Jiri Olsa
@ 2015-10-06 12:25 ` Jiri Olsa
  2015-10-06 13:37   ` Arnaldo Carvalho de Melo
  2015-10-08  9:46   ` [tip:perf/core] " tip-bot for Jiri Olsa
  2015-10-06 14:04 ` [RFC 0/3] perf tools: Make perf_hpp__init respect output dimensions Namhyung Kim
  3 siblings, 2 replies; 10+ messages in thread
From: Jiri Olsa @ 2015-10-06 12:25 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: lkml, David Ahern, Ingo Molnar, Namhyung Kim, Peter Zijlstra

The perf_hpp__init currently does not respect sorting dimensions
and the setup_sorting function could endup queueing same format
twice. That screwed up the perf_hpp__list and got stuck in loop
within perf_hpp__setup_output_field function.

  $ perf report -F +overhead

  0x00000000004c1355 in perf_hpp__is_sort_entry (format=format@entry=0x880440 <perf_hpp.format>) at util/sort.c:1506
  1506    {

     #0  0x00000000004c1355 in perf_hpp__is_sort_entry (format=format@entry=0x880440 <perf_hpp.format>) at util/sort.c:1506
     #1  0x00000000004c139d in perf_hpp__same_sort_entry (a=a@entry=0x880440 <perf_hpp.format>, b=b@entry=0x2bb2fe0) at util/sort.c:1380
     #2  0x00000000004f8d3c in perf_hpp__setup_output_field () at ui/hist.c:554
     #3  0x00000000004c1d1e in setup_sorting () at util/sort.c:1984
     #4  0x000000000042efbf in cmd_report (argc=0, argv=0x7ffea5a0e790, prefix=<optimized out>) at builtin-report.c:874
     #5  0x0000000000476f13 in run_builtin (p=p@entry=0x875628 <commands+168>, argc=argc@entry=3, argv=argv@entry=0x7ffea5a0e790) at perf.c:385
     #6  0x000000000047710b in handle_internal_command (argc=3, argv=0x7ffea5a0e790) at perf.c:445
     #7  0x0000000000477176 in run_argv (argcp=argcp@entry=0x7ffea5a0e5fc, argv=argv@entry=0x7ffea5a0e5f0) at perf.c:489
     #8  0x00000000004773e7 in main (argc=3, argv=0x7ffea5a0e790) at perf.c:606

Using hpp_dimension__add_output function to register
the output column. It will also mark the dimension
as taken and omit above stuck.

Link: http://lkml.kernel.org/n/tip-ob2dr3ec7gca200ifzpoqhhm@git.kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
 tools/perf/ui/hist.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index 25d608394d74..5029ba2b55af 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -463,27 +463,27 @@ void perf_hpp__init(void)
 		return;
 
 	if (symbol_conf.cumulate_callchain) {
-		perf_hpp__column_enable(PERF_HPP__OVERHEAD_ACC);
+		hpp_dimension__add_output(PERF_HPP__OVERHEAD_ACC);
 		perf_hpp__format[PERF_HPP__OVERHEAD].name = "Self";
 	}
 
-	perf_hpp__column_enable(PERF_HPP__OVERHEAD);
+	hpp_dimension__add_output(PERF_HPP__OVERHEAD);
 
 	if (symbol_conf.show_cpu_utilization) {
-		perf_hpp__column_enable(PERF_HPP__OVERHEAD_SYS);
-		perf_hpp__column_enable(PERF_HPP__OVERHEAD_US);
+		hpp_dimension__add_output(PERF_HPP__OVERHEAD_SYS);
+		hpp_dimension__add_output(PERF_HPP__OVERHEAD_US);
 
 		if (perf_guest) {
-			perf_hpp__column_enable(PERF_HPP__OVERHEAD_GUEST_SYS);
-			perf_hpp__column_enable(PERF_HPP__OVERHEAD_GUEST_US);
+			hpp_dimension__add_output(PERF_HPP__OVERHEAD_GUEST_SYS);
+			hpp_dimension__add_output(PERF_HPP__OVERHEAD_GUEST_US);
 		}
 	}
 
 	if (symbol_conf.show_nr_samples)
-		perf_hpp__column_enable(PERF_HPP__SAMPLES);
+		hpp_dimension__add_output(PERF_HPP__SAMPLES);
 
 	if (symbol_conf.show_total_period)
-		perf_hpp__column_enable(PERF_HPP__PERIOD);
+		hpp_dimension__add_output(PERF_HPP__PERIOD);
 
 	/* prepend overhead field for backward compatiblity.  */
 	list = &perf_hpp__format[PERF_HPP__OVERHEAD].sort_list;
-- 
2.4.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 3/3] perf tools: Use hpp_dimension__add_output to register hpp columns
  2015-10-06 12:25 ` [PATCH 3/3] perf tools: Use hpp_dimension__add_output to register hpp columns Jiri Olsa
@ 2015-10-06 13:37   ` Arnaldo Carvalho de Melo
  2015-10-08  9:46   ` [tip:perf/core] " tip-bot for Jiri Olsa
  1 sibling, 0 replies; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-10-06 13:37 UTC (permalink / raw)
  To: Jiri Olsa; +Cc: lkml, David Ahern, Ingo Molnar, Namhyung Kim, Peter Zijlstra

Em Tue, Oct 06, 2015 at 02:25:12PM +0200, Jiri Olsa escreveu:
> The perf_hpp__init currently does not respect sorting dimensions
> and the setup_sorting function could endup queueing same format
> twice. That screwed up the perf_hpp__list and got stuck in loop
> within perf_hpp__setup_output_field function.
> 
>   $ perf report -F +overhead
> 
>   0x00000000004c1355 in perf_hpp__is_sort_entry (format=format@entry=0x880440 <perf_hpp.format>) at util/sort.c:1506
>   1506    {
> 
>      #0  0x00000000004c1355 in perf_hpp__is_sort_entry (format=format@entry=0x880440 <perf_hpp.format>) at util/sort.c:1506
>      #1  0x00000000004c139d in perf_hpp__same_sort_entry (a=a@entry=0x880440 <perf_hpp.format>, b=b@entry=0x2bb2fe0) at util/sort.c:1380
>      #2  0x00000000004f8d3c in perf_hpp__setup_output_field () at ui/hist.c:554
>      #3  0x00000000004c1d1e in setup_sorting () at util/sort.c:1984
>      #4  0x000000000042efbf in cmd_report (argc=0, argv=0x7ffea5a0e790, prefix=<optimized out>) at builtin-report.c:874
>      #5  0x0000000000476f13 in run_builtin (p=p@entry=0x875628 <commands+168>, argc=argc@entry=3, argv=argv@entry=0x7ffea5a0e790) at perf.c:385
>      #6  0x000000000047710b in handle_internal_command (argc=3, argv=0x7ffea5a0e790) at perf.c:445
>      #7  0x0000000000477176 in run_argv (argcp=argcp@entry=0x7ffea5a0e5fc, argv=argv@entry=0x7ffea5a0e5f0) at perf.c:489
>      #8  0x00000000004773e7 in main (argc=3, argv=0x7ffea5a0e790) at perf.c:606
> 
> Using hpp_dimension__add_output function to register
> the output column. It will also mark the dimension
> as taken and omit above stuck.

Thanks, did a quick review, looks sane, tested, fixed the problem,
applied.

- Arnaldo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC 0/3] perf tools: Make perf_hpp__init respect output dimensions
  2015-10-06 12:25 [RFC 0/3] perf tools: Make perf_hpp__init respect output dimensions Jiri Olsa
                   ` (2 preceding siblings ...)
  2015-10-06 12:25 ` [PATCH 3/3] perf tools: Use hpp_dimension__add_output to register hpp columns Jiri Olsa
@ 2015-10-06 14:04 ` Namhyung Kim
  2015-10-06 14:28   ` Arnaldo Carvalho de Melo
  3 siblings, 1 reply; 10+ messages in thread
From: Namhyung Kim @ 2015-10-06 14:04 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: Arnaldo Carvalho de Melo, lkml, David Ahern, Ingo Molnar,
	Peter Zijlstra

On Tue, Oct 6, 2015 at 9:25 PM, Jiri Olsa <jolsa@kernel.org> wrote:
> hi,
> The perf_hpp__init currently does not respect sorting dimensions
> and the setup_sorting function could endup queueing same format
> twice. That screwed up the perf_hpp__list and got stuck in loop
> within perf_hpp__setup_output_field function.
>
>   $ perf report -F +overhead
>
>   0x00000000004c1355 in perf_hpp__is_sort_entry (format=format@entry=0x880440 <perf_hpp.format>) at util/sort.c:1506
>   1506    {
>
>      #0  0x00000000004c1355 in perf_hpp__is_sort_entry (format=format@entry=0x880440 <perf_hpp.format>) at util/sort.c:1506
>      #1  0x00000000004c139d in perf_hpp__same_sort_entry (a=a@entry=0x880440 <perf_hpp.format>, b=b@entry=0x2bb2fe0) at util/sort.c:1380
>      #2  0x00000000004f8d3c in perf_hpp__setup_output_field () at ui/hist.c:554
>      #3  0x00000000004c1d1e in setup_sorting () at util/sort.c:1984
>      #4  0x000000000042efbf in cmd_report (argc=0, argv=0x7ffea5a0e790, prefix=<optimized out>) at builtin-report.c:874
>      #5  0x0000000000476f13 in run_builtin (p=p@entry=0x875628 <commands+168>, argc=argc@entry=3, argv=argv@entry=0x7ffea5a0e790) at perf.c:385
>      #6  0x000000000047710b in handle_internal_command (argc=3, argv=0x7ffea5a0e790) at perf.c:445
>      #7  0x0000000000477176 in run_argv (argcp=argcp@entry=0x7ffea5a0e5fc, argv=argv@entry=0x7ffea5a0e5f0) at perf.c:489
>      #8  0x00000000004773e7 in main (argc=3, argv=0x7ffea5a0e790) at perf.c:606
>
> Using hpp_dimension__add_output function to register
> the output column. It will also mark the dimension
> as taken and omit above stuck.
>
> It might need some other changes.. not sure, Namhyung? ;-)

Nope.  It looks good to me as is. :)  It should work once it sets up
the output field and sort list properly, so

Acked-by: Namhyung Kim <namhyung@kernel.org>

Thanks,
Namhyung



>
> Available in:
>   git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
>   perf/cols
>
> thanks,
> jirka
>
>
> ---
> Jiri Olsa (3):
>       perf tools: Get rid of superfluos call to reset_dimensions
>       perf tools: Introduce hpp_dimension__add_output function
>       perf tools: Use hpp_dimension__add_output to register hpp columns
>
>  tools/perf/ui/hist.c   | 16 ++++++++--------
>  tools/perf/util/sort.c |  8 ++++++--
>  tools/perf/util/sort.h |  2 ++
>  3 files changed, 16 insertions(+), 10 deletions(-)



-- 
Thanks,
Namhyung

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC 0/3] perf tools: Make perf_hpp__init respect output dimensions
  2015-10-06 14:04 ` [RFC 0/3] perf tools: Make perf_hpp__init respect output dimensions Namhyung Kim
@ 2015-10-06 14:28   ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-10-06 14:28 UTC (permalink / raw)
  To: Namhyung Kim; +Cc: Jiri Olsa, lkml, David Ahern, Ingo Molnar, Peter Zijlstra

Em Tue, Oct 06, 2015 at 11:04:28PM +0900, Namhyung Kim escreveu:
> On Tue, Oct 6, 2015 at 9:25 PM, Jiri Olsa <jolsa@kernel.org> wrote:
> > hi,
> > The perf_hpp__init currently does not respect sorting dimensions
> > and the setup_sorting function could endup queueing same format
> > twice. That screwed up the perf_hpp__list and got stuck in loop
> > within perf_hpp__setup_output_field function.
> >
> >   $ perf report -F +overhead
> >
> >   0x00000000004c1355 in perf_hpp__is_sort_entry (format=format@entry=0x880440 <perf_hpp.format>) at util/sort.c:1506
> >   1506    {
> >
> >      #0  0x00000000004c1355 in perf_hpp__is_sort_entry (format=format@entry=0x880440 <perf_hpp.format>) at util/sort.c:1506
> >      #1  0x00000000004c139d in perf_hpp__same_sort_entry (a=a@entry=0x880440 <perf_hpp.format>, b=b@entry=0x2bb2fe0) at util/sort.c:1380
> >      #2  0x00000000004f8d3c in perf_hpp__setup_output_field () at ui/hist.c:554
> >      #3  0x00000000004c1d1e in setup_sorting () at util/sort.c:1984
> >      #4  0x000000000042efbf in cmd_report (argc=0, argv=0x7ffea5a0e790, prefix=<optimized out>) at builtin-report.c:874
> >      #5  0x0000000000476f13 in run_builtin (p=p@entry=0x875628 <commands+168>, argc=argc@entry=3, argv=argv@entry=0x7ffea5a0e790) at perf.c:385
> >      #6  0x000000000047710b in handle_internal_command (argc=3, argv=0x7ffea5a0e790) at perf.c:445
> >      #7  0x0000000000477176 in run_argv (argcp=argcp@entry=0x7ffea5a0e5fc, argv=argv@entry=0x7ffea5a0e5f0) at perf.c:489
> >      #8  0x00000000004773e7 in main (argc=3, argv=0x7ffea5a0e790) at perf.c:606
> >
> > Using hpp_dimension__add_output function to register
> > the output column. It will also mark the dimension
> > as taken and omit above stuck.
> >
> > It might need some other changes.. not sure, Namhyung? ;-)
> 
> Nope.  It looks good to me as is. :)  It should work once it sets up
> the output field and sort list properly, so
> 
> Acked-by: Namhyung Kim <namhyung@kernel.org>

Thanks, added.

- Arnaldo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [tip:perf/core] perf tools: Get rid of superfluos call to reset_dimensions
  2015-10-06 12:25 ` [PATCH 1/3] perf tools: Get rid of superfluos call to reset_dimensions Jiri Olsa
@ 2015-10-08  9:45   ` tip-bot for Jiri Olsa
  0 siblings, 0 replies; 10+ messages in thread
From: tip-bot for Jiri Olsa @ 2015-10-08  9:45 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: mingo, dsahern, linux-kernel, hpa, acme, tglx, jolsa,
	a.p.zijlstra, namhyung

Commit-ID:  0974d2c9719a4c74fea0f6886b9922b100b903a6
Gitweb:     http://git.kernel.org/tip/0974d2c9719a4c74fea0f6886b9922b100b903a6
Author:     Jiri Olsa <jolsa@kernel.org>
AuthorDate: Tue, 6 Oct 2015 14:25:10 +0200
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Tue, 6 Oct 2015 18:04:58 -0300

perf tools: Get rid of superfluos call to reset_dimensions

There's no need to call reset_dimensions within __setup_output_field
function. It's already called in its caller setup_sorting right before
perf_hpp__init, which will be changed in following patch to respect
taken dimension.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1444134312-29136-2-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/sort.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index ee94b72..8521e3c 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -1917,8 +1917,6 @@ static int __setup_output_field(void)
 	if (field_order == NULL)
 		return 0;
 
-	reset_dimensions();
-
 	strp = str = strdup(field_order);
 	if (str == NULL) {
 		error("Not enough memory to setup output fields");

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [tip:perf/core] perf tools: Introduce hpp_dimension__add_output function
  2015-10-06 12:25 ` [PATCH 2/3] perf tools: Introduce hpp_dimension__add_output function Jiri Olsa
@ 2015-10-08  9:46   ` tip-bot for Jiri Olsa
  0 siblings, 0 replies; 10+ messages in thread
From: tip-bot for Jiri Olsa @ 2015-10-08  9:46 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: tglx, hpa, a.p.zijlstra, namhyung, jolsa, dsahern, mingo, acme,
	linux-kernel

Commit-ID:  beeaaeb3684d97e89548c1b6b6275329214014df
Gitweb:     http://git.kernel.org/tip/beeaaeb3684d97e89548c1b6b6275329214014df
Author:     Jiri Olsa <jolsa@kernel.org>
AuthorDate: Tue, 6 Oct 2015 14:25:11 +0200
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Tue, 6 Oct 2015 18:04:59 -0300

perf tools: Introduce hpp_dimension__add_output function

This function will allow to register output column from ui code and
respect taken sort/output dimensions.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1444134312-29136-3-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/sort.c | 6 ++++++
 tools/perf/util/sort.h | 2 ++
 2 files changed, 8 insertions(+)

diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 8521e3c..2d8ccd4 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -1577,6 +1577,12 @@ static int __hpp_dimension__add_output(struct hpp_dimension *hd)
 	return 0;
 }
 
+int hpp_dimension__add_output(unsigned col)
+{
+	BUG_ON(col >= PERF_HPP__MAX_INDEX);
+	return __hpp_dimension__add_output(&hpp_sort_dimensions[col]);
+}
+
 int sort_dimension__add(const char *tok)
 {
 	unsigned int i;
diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h
index 33b3d30..3122885 100644
--- a/tools/perf/util/sort.h
+++ b/tools/perf/util/sort.h
@@ -234,4 +234,6 @@ void perf_hpp__set_elide(int idx, bool elide);
 int report_parse_ignore_callees_opt(const struct option *opt, const char *arg, int unset);
 
 bool is_strict_order(const char *order);
+
+int hpp_dimension__add_output(unsigned col);
 #endif	/* __PERF_SORT_H */

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [tip:perf/core] perf tools: Use hpp_dimension__add_output to register hpp columns
  2015-10-06 12:25 ` [PATCH 3/3] perf tools: Use hpp_dimension__add_output to register hpp columns Jiri Olsa
  2015-10-06 13:37   ` Arnaldo Carvalho de Melo
@ 2015-10-08  9:46   ` tip-bot for Jiri Olsa
  1 sibling, 0 replies; 10+ messages in thread
From: tip-bot for Jiri Olsa @ 2015-10-08  9:46 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: tglx, jolsa, a.p.zijlstra, acme, mingo, linux-kernel, hpa,
	dsahern, namhyung

Commit-ID:  1178bfd41f3ab6914eb6884875b776bc3032c9b5
Gitweb:     http://git.kernel.org/tip/1178bfd41f3ab6914eb6884875b776bc3032c9b5
Author:     Jiri Olsa <jolsa@kernel.org>
AuthorDate: Tue, 6 Oct 2015 14:25:12 +0200
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Tue, 6 Oct 2015 18:04:59 -0300

perf tools: Use hpp_dimension__add_output to register hpp columns

The perf_hpp__init currently does not respect sorting dimensions and the
setup_sorting function could endup queueing same format twice. That
screwed up the perf_hpp__list and got stuck in loop within
perf_hpp__setup_output_field function.

  $ perf report -F +overhead

  0x00000000004c1355 in perf_hpp__is_sort_entry (format=format@entry=0x880440 <perf_hpp.format>) at util/sort.c:1506
  1506    {

     #0  0x00000000004c1355 in perf_hpp__is_sort_entry (format=format@entry=0x880440 <perf_hpp.format>) at util/sort.c:1506
     #1  0x00000000004c139d in perf_hpp__same_sort_entry (a=a@entry=0x880440 <perf_hpp.format>, b=b@entry=0x2bb2fe0) at util/sort.c:1380
     #2  0x00000000004f8d3c in perf_hpp__setup_output_field () at ui/hist.c:554
     #3  0x00000000004c1d1e in setup_sorting () at util/sort.c:1984
     #4  0x000000000042efbf in cmd_report (argc=0, argv=0x7ffea5a0e790, prefix=<optimized out>) at builtin-report.c:874
     #5  0x0000000000476f13 in run_builtin (p=p@entry=0x875628 <commands+168>, argc=argc@entry=3, argv=argv@entry=0x7ffea5a0e790) at perf.c:385
     #6  0x000000000047710b in handle_internal_command (argc=3, argv=0x7ffea5a0e790) at perf.c:445
     #7  0x0000000000477176 in run_argv (argcp=argcp@entry=0x7ffea5a0e5fc, argv=argv@entry=0x7ffea5a0e5f0) at perf.c:489
     #8  0x00000000004773e7 in main (argc=3, argv=0x7ffea5a0e790) at perf.c:606

Using hpp_dimension__add_output function to register the output column.
It will also mark the dimension as taken and omit above stuck.

Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1444134312-29136-4-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/ui/hist.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index 25d6083..5029ba2 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -463,27 +463,27 @@ void perf_hpp__init(void)
 		return;
 
 	if (symbol_conf.cumulate_callchain) {
-		perf_hpp__column_enable(PERF_HPP__OVERHEAD_ACC);
+		hpp_dimension__add_output(PERF_HPP__OVERHEAD_ACC);
 		perf_hpp__format[PERF_HPP__OVERHEAD].name = "Self";
 	}
 
-	perf_hpp__column_enable(PERF_HPP__OVERHEAD);
+	hpp_dimension__add_output(PERF_HPP__OVERHEAD);
 
 	if (symbol_conf.show_cpu_utilization) {
-		perf_hpp__column_enable(PERF_HPP__OVERHEAD_SYS);
-		perf_hpp__column_enable(PERF_HPP__OVERHEAD_US);
+		hpp_dimension__add_output(PERF_HPP__OVERHEAD_SYS);
+		hpp_dimension__add_output(PERF_HPP__OVERHEAD_US);
 
 		if (perf_guest) {
-			perf_hpp__column_enable(PERF_HPP__OVERHEAD_GUEST_SYS);
-			perf_hpp__column_enable(PERF_HPP__OVERHEAD_GUEST_US);
+			hpp_dimension__add_output(PERF_HPP__OVERHEAD_GUEST_SYS);
+			hpp_dimension__add_output(PERF_HPP__OVERHEAD_GUEST_US);
 		}
 	}
 
 	if (symbol_conf.show_nr_samples)
-		perf_hpp__column_enable(PERF_HPP__SAMPLES);
+		hpp_dimension__add_output(PERF_HPP__SAMPLES);
 
 	if (symbol_conf.show_total_period)
-		perf_hpp__column_enable(PERF_HPP__PERIOD);
+		hpp_dimension__add_output(PERF_HPP__PERIOD);
 
 	/* prepend overhead field for backward compatiblity.  */
 	list = &perf_hpp__format[PERF_HPP__OVERHEAD].sort_list;

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-10-08  9:46 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-06 12:25 [RFC 0/3] perf tools: Make perf_hpp__init respect output dimensions Jiri Olsa
2015-10-06 12:25 ` [PATCH 1/3] perf tools: Get rid of superfluos call to reset_dimensions Jiri Olsa
2015-10-08  9:45   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-10-06 12:25 ` [PATCH 2/3] perf tools: Introduce hpp_dimension__add_output function Jiri Olsa
2015-10-08  9:46   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-10-06 12:25 ` [PATCH 3/3] perf tools: Use hpp_dimension__add_output to register hpp columns Jiri Olsa
2015-10-06 13:37   ` Arnaldo Carvalho de Melo
2015-10-08  9:46   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-10-06 14:04 ` [RFC 0/3] perf tools: Make perf_hpp__init respect output dimensions Namhyung Kim
2015-10-06 14:28   ` Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.