2011-05-17 15:32:14

by Stephane Eranian

[permalink] [raw]
Subject: [PATCH] perf: make annotate more readable


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 <[email protected]>
---

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,


2011-05-17 15:46:20

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH] perf: make annotate more readable

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 <[email protected]>

2011-06-03 18:56:44

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH] perf: make annotate more readable

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

2011-06-03 18:59:25

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH] perf: make annotate more readable

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

2011-06-03 19:04:22

by Måns Rullgård

[permalink] [raw]
Subject: Re: [PATCH] perf: make annotate more readable

Stephane Eranian <[email protected]> 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
[email protected]