perf: make annotate more readable
PATCH 1/1 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.
---
tools/perf/Documentation/perf-annotate.txt +9 -0
@@ -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]
tools/perf/builtin-annotate.c +4 -0
@@ -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() };
tools/perf/util/annotate.c +4 -1
@@ -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);
tools/perf/util/symbol.h +3 -1
@@ -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,
Quoted 7 lines · Stephane Eranian
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 codeWe 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.
Quoted 1 line
Raw encodings are not useful in most cases.
Also true.
Em Tue, May 17, 2011 at 05:32:07PM +0200, Stephane Eranian escreveu:
Quoted 10 lines
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 codeWe 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
Em Fri, Jun 03, 2011 at 03:56:33PM -0300, Arnaldo Carvalho de Melo escreveu:
Quoted 10 lines
Em Tue, May 17, 2011 at 05:32:07PM +0200, Stephane Eranian escreveu:
Quoted 9 lines
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 codeWe believe those options make the output of annotate more readable. Systematically displaying source can make it hard to follow code and especially optimized code.
Quoted 5 lines
Quoted 1 line
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
Quoted 9 lines · Stephane Eranian
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 codeWe 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?
Signature · 2 lines
Måns Rullgård [email protected]
[tip:perf/core] perf annotate: Make output more readable
In reply to Stephane EranianCommit-ID: 3e6a2a7f3b9d0e521bb3284573b696d0cbe1952c Gitweb: http://git.kernel.org/tip/3e6a2a7f3b9d0e521bb3284573b696d0cbe1952c Author: Stephane Eranian <[email protected]> AuthorDate: Tue, 17 May 2011 17:32:07 +0200 Committer: Arnaldo Carvalho de Melo <[email protected]> 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.
--- 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(-)
tools/perf/Documentation/perf-annotate.txt +8 -0
@@ -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]
tools/perf/builtin-annotate.c +4 -0
@@ -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() };
tools/perf/util/annotate.c +4 -1
@@ -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);
tools/perf/util/symbol.c +2 -0
@@ -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 = "", };
tools/perf/util/symbol.h +3 -1
@@ -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,