linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] perf: make annotate more readable
@ 2011-05-17 15:32 Stephane Eranian
  2011-05-17 15:46 ` Peter Zijlstra
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Stephane Eranian @ 2011-05-17 15:32 UTC (permalink / raw)
  To: linux-kernel; +Cc: acme, peterz, mingo


This patch adds two new options to perf annotate:
	- -R, --no-asm-raw : do not display raw instruction encodings
	- -S, --no-source  : do not interleave source code with assembly code

We believe those options make the output of annotate more readable.
Systematically displaying source can make it hard to follow code and
especially optimized code.

Raw encodings are not useful in most cases.

Signed-off-by: Stephane Eranian <eranian@google.com>
---

diff --git a/tools/perf/Documentation/perf-annotate.txt b/tools/perf/Documentation/perf-annotate.txt
index 6f5a498..cf59fdd 100644
--- a/tools/perf/Documentation/perf-annotate.txt
+++ b/tools/perf/Documentation/perf-annotate.txt
@@ -66,6 +66,15 @@ OPTIONS
 	used. This interfaces starts by centering on the line with more
 	samples, TAB/UNTAB cycles through the lines with more samples.
 
+-R::
+--no-asm-raw::
+	Do not show raw instruction encoding of assembly instructions. They
+	are displayed by default
+
+-S
+--no-source::
+	Do not interleave source code with assembly code.
+
 SEE ALSO
 --------
 linkperf:perf-record[1], linkperf:perf-report[1]
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
index e18eb7e..976f5d8 100644
--- a/tools/perf/builtin-annotate.c
+++ b/tools/perf/builtin-annotate.c
@@ -254,6 +254,10 @@ static const struct option options[] = {
 		    "print matching source lines (may be slow)"),
 	OPT_BOOLEAN('P', "full-paths", &full_paths,
 		    "Don't shorten the displayed pathnames"),
+		OPT_BOOLEAN('S', "no-source", &symbol_conf.annotate_no_src,
+		    "do not interleave source code with assembly code"),
+		OPT_BOOLEAN('R', "no-asm-raw", &symbol_conf.asm_no_raw,
+		    "do not display raw encoding of assembly instructions"),
 	OPT_END()
 };
 
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index 532e4a6..5ccb32b 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -324,9 +324,12 @@ fallback:
 
 	snprintf(command, sizeof(command),
 		 "objdump --start-address=0x%016" PRIx64
-		 " --stop-address=0x%016" PRIx64 " -dS -C %s|grep -v %s|expand",
+		 " --stop-address=0x%016" PRIx64
+		 " -d %s %s -C %s|grep -v %s|expand",
 		 map__rip_2objdump(map, sym->start),
 		 map__rip_2objdump(map, sym->end),
+		 symbol_conf.asm_no_raw ? "--no-show-raw" : "",
+		 symbol_conf.annotate_no_src ? "" : "-S",
 		 symfs_filename, filename);
 
 	pr_debug("Executing: %s\n", command);
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h
index c1736e5..bd75365 100644
--- a/tools/perf/util/symbol.h
+++ b/tools/perf/util/symbol.h
@@ -75,7 +75,9 @@ struct symbol_conf {
 			use_callchain,
 			exclude_other,
 			show_cpu_utilization,
-			initialized;
+			initialized,
+			asm_no_raw,
+			annotate_no_src;
 	const char	*vmlinux_name,
 			*kallsyms_name,
 			*source_prefix,

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

* Re: [PATCH] perf: make annotate more readable
  2011-05-17 15:32 [PATCH] perf: make annotate more readable Stephane Eranian
@ 2011-05-17 15:46 ` Peter Zijlstra
  2011-06-03 18:56 ` Arnaldo Carvalho de Melo
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Peter Zijlstra @ 2011-05-17 15:46 UTC (permalink / raw)
  To: Stephane Eranian; +Cc: linux-kernel, acme, mingo

On Tue, 2011-05-17 at 17:32 +0200, Stephane Eranian wrote:
> This patch adds two new options to perf annotate:
> 	- -R, --no-asm-raw : do not display raw instruction encodings
> 	- -S, --no-source  : do not interleave source code with assembly code
> 
> We believe those options make the output of annotate more readable.
> Systematically displaying source can make it hard to follow code and
> especially optimized code.

Agreed, asm->C maps from optimized code are a mess.

> Raw encodings are not useful in most cases.

Also true.

Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>

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

* Re: [PATCH] perf: make annotate more readable
  2011-05-17 15:32 [PATCH] perf: make annotate more readable Stephane Eranian
  2011-05-17 15:46 ` Peter Zijlstra
@ 2011-06-03 18:56 ` Arnaldo Carvalho de Melo
  2011-06-03 18:59   ` Arnaldo Carvalho de Melo
  2011-06-03 19:04 ` Måns Rullgård
  2011-08-18 20:13 ` [tip:perf/core] perf annotate: Make output " tip-bot for Stephane Eranian
  3 siblings, 1 reply; 6+ messages in thread
From: Arnaldo Carvalho de Melo @ 2011-06-03 18:56 UTC (permalink / raw)
  To: Stephane Eranian; +Cc: linux-kernel, peterz, mingo

Em Tue, May 17, 2011 at 05:32:07PM +0200, Stephane Eranian escreveu:
> 
> This patch adds two new options to perf annotate:
> 	- -R, --no-asm-raw : do not display raw instruction encodings
> 	- -S, --no-source  : do not interleave source code with assembly code
> 
> We believe those options make the output of annotate more readable.
> Systematically displaying source can make it hard to follow code and
> especially optimized code.
> 
> Raw encodings are not useful in most cases.

Ok, applying it and then adding a followup patch to have these new
options in both 'perf top' and 'perf report', since you can do
annotation (live and static, respectively) from those tools.

- Arnaldo

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

* Re: [PATCH] perf: make annotate more readable
  2011-06-03 18:56 ` Arnaldo Carvalho de Melo
@ 2011-06-03 18:59   ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 6+ messages in thread
From: Arnaldo Carvalho de Melo @ 2011-06-03 18:59 UTC (permalink / raw)
  To: Stephane Eranian; +Cc: linux-kernel, peterz, mingo

Em Fri, Jun 03, 2011 at 03:56:33PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Tue, May 17, 2011 at 05:32:07PM +0200, Stephane Eranian escreveu:
> > 
> > This patch adds two new options to perf annotate:
> > 	- -R, --no-asm-raw : do not display raw instruction encodings
> > 	- -S, --no-source  : do not interleave source code with assembly code
> > 
> > We believe those options make the output of annotate more readable.
> > Systematically displaying source can make it hard to follow code and
> > especially optimized code.
> > 
> > Raw encodings are not useful in most cases.
> 
> Ok, applying it and then adding a followup patch to have these new
> options in both 'perf top' and 'perf report', since you can do
> annotation (live and static, respectively) from those tools.

Will change it to --source and --asm-raw, since we have logic to negate
any option by adding "no-" after '--' and before boolean options.

- Arnaldo

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

* Re: [PATCH] perf: make annotate more readable
  2011-05-17 15:32 [PATCH] perf: make annotate more readable Stephane Eranian
  2011-05-17 15:46 ` Peter Zijlstra
  2011-06-03 18:56 ` Arnaldo Carvalho de Melo
@ 2011-06-03 19:04 ` Måns Rullgård
  2011-08-18 20:13 ` [tip:perf/core] perf annotate: Make output " tip-bot for Stephane Eranian
  3 siblings, 0 replies; 6+ messages in thread
From: Måns Rullgård @ 2011-06-03 19:04 UTC (permalink / raw)
  To: linux-kernel

Stephane Eranian <eranian@google.com> writes:

> This patch adds two new options to perf annotate:
> 	- -R, --no-asm-raw : do not display raw instruction encodings
> 	- -S, --no-source  : do not interleave source code with assembly code
>
> We believe those options make the output of annotate more readable.
> Systematically displaying source can make it hard to follow code and
> especially optimized code.
>
> Raw encodings are not useful in most cases.

Would it be possible to have it display only the source like opannotate
can do?

-- 
Måns Rullgård
mans@mansr.com


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

* [tip:perf/core] perf annotate: Make output more readable
  2011-05-17 15:32 [PATCH] perf: make annotate more readable Stephane Eranian
                   ` (2 preceding siblings ...)
  2011-06-03 19:04 ` Måns Rullgård
@ 2011-08-18 20:13 ` tip-bot for Stephane Eranian
  3 siblings, 0 replies; 6+ messages in thread
From: tip-bot for Stephane Eranian @ 2011-08-18 20:13 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: acme, linux-kernel, eranian, hpa, mingo, peterz, tglx, mingo

Commit-ID:  3e6a2a7f3b9d0e521bb3284573b696d0cbe1952c
Gitweb:     http://git.kernel.org/tip/3e6a2a7f3b9d0e521bb3284573b696d0cbe1952c
Author:     Stephane Eranian <eranian@google.com>
AuthorDate: Tue, 17 May 2011 17:32:07 +0200
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Thu, 18 Aug 2011 07:38:21 -0300

perf annotate: Make output more readable

This patch adds two new options to perf annotate:
	- --no-asm-raw : Do not display raw instruction encodings
	- --no-source  : Do not interleave source code with assembly code

We believe those options make the output of annotate more readable.

Systematically displaying source can make it hard to follow code and
especially optimized code.

Raw encodings are not useful in most cases.

Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20110517153207.GA9834@quad
Signed-off-by: Stephane Eranian <eranian@google.com>
[committer note: Use the 'no-' option inverting logic]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/Documentation/perf-annotate.txt |    8 ++++++++
 tools/perf/builtin-annotate.c              |    4 ++++
 tools/perf/util/annotate.c                 |    5 ++++-
 tools/perf/util/symbol.c                   |    2 ++
 tools/perf/util/symbol.h                   |    4 +++-
 5 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/tools/perf/Documentation/perf-annotate.txt b/tools/perf/Documentation/perf-annotate.txt
index 85c5f02..5bc0600 100644
--- a/tools/perf/Documentation/perf-annotate.txt
+++ b/tools/perf/Documentation/perf-annotate.txt
@@ -72,6 +72,14 @@ OPTIONS
 	CPUs are specified with -: 0-2. Default is to report samples on all
 	CPUs.
 
+--asm-raw::
+	Show raw instruction encoding of assembly instructions. They
+	are displayed by default, disable with --no-asm-raw.
+
+--source::
+	Interleave source code with assembly code. Enabled by default,
+	disable with --no-source.
+
 SEE ALSO
 --------
 linkperf:perf-record[1], linkperf:perf-report[1]
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
index 555aefd..5015e04 100644
--- a/tools/perf/builtin-annotate.c
+++ b/tools/perf/builtin-annotate.c
@@ -267,6 +267,10 @@ static const struct option options[] = {
 	OPT_BOOLEAN('P', "full-paths", &full_paths,
 		    "Don't shorten the displayed pathnames"),
 	OPT_STRING('c', "cpu", &cpu_list, "cpu", "list of cpus to profile"),
+	OPT_BOOLEAN('0', "source", &symbol_conf.annotate_src,
+		    "Interleave source code with assembly code (default)"),
+	OPT_BOOLEAN('0', "asm-raw", &symbol_conf.annotate_asm_raw,
+		    "Display raw encoding of assembly instructions (default)"),
 	OPT_END()
 };
 
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index e01af2b..01d36ba 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -324,9 +324,12 @@ fallback:
 
 	snprintf(command, sizeof(command),
 		 "objdump --start-address=0x%016" PRIx64
-		 " --stop-address=0x%016" PRIx64 " -dS -C %s|grep -v %s|expand",
+		 " --stop-address=0x%016" PRIx64
+		 " -d %s %s -C %s|grep -v %s|expand",
 		 map__rip_2objdump(map, sym->start),
 		 map__rip_2objdump(map, sym->end),
+		 symbol_conf.annotate_asm_raw ? "" : "--no-show-raw",
+		 symbol_conf.annotate_src ? "-S" : "",
 		 symfs_filename, filename);
 
 	pr_debug("Executing: %s\n", command);
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index 469c026..245e60d 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -46,6 +46,8 @@ struct symbol_conf symbol_conf = {
 	.exclude_other	  = true,
 	.use_modules	  = true,
 	.try_vmlinux_path = true,
+	.annotate_asm_raw = true,
+	.annotate_src	  = true,
 	.symfs            = "",
 };
 
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h
index 4f377d9..7733f0b 100644
--- a/tools/perf/util/symbol.h
+++ b/tools/perf/util/symbol.h
@@ -76,7 +76,9 @@ struct symbol_conf {
 			exclude_other,
 			show_cpu_utilization,
 			initialized,
-			kptr_restrict;
+			kptr_restrict,
+			annotate_asm_raw,
+			annotate_src;
 	const char	*vmlinux_name,
 			*kallsyms_name,
 			*source_prefix,

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

end of thread, other threads:[~2011-08-18 20:13 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-17 15:32 [PATCH] perf: make annotate more readable Stephane Eranian
2011-05-17 15:46 ` Peter Zijlstra
2011-06-03 18:56 ` Arnaldo Carvalho de Melo
2011-06-03 18:59   ` Arnaldo Carvalho de Melo
2011-06-03 19:04 ` Måns Rullgård
2011-08-18 20:13 ` [tip:perf/core] perf annotate: Make output " tip-bot for Stephane Eranian

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).