linux/tools/perf
Arnaldo Carvalho de Melo 2e538c4a18 perf tools: Improve kernel/modules symbol lookup
This removes the ovelapping of vmlinux addresses with modules,
using the ELF section name when using --vmlinux and creating a
unique DSO name when using /proc/kallsyms ([kernel].N).

This is done by creating multiple 'struct map' instances for
address ranges backed by DSOs that have just the symbols for that
range and a name that is derived from the ELF section name.o

Now it is possible to ask for just the symbols in some particular
kernel section:

$ perf report -m --vmlinux ../build/tip-recvmmsg/vmlinux \
	--dsos [kernel].vsyscall_fn | head -15
    52.73%             Xorg  [.] vread_hpet
    18.61%          firefox  [.] vread_hpet
    14.50%     npviewer.bin  [.] vread_hpet
     6.83%           compiz  [.] vread_hpet
     5.73%         glxgears  [.] vread_hpet
     0.63%             java  [.] vread_hpet
     0.30%   gnome-terminal  [.] vread_hpet
     0.23%             perf  [.] vread_hpet
     0.18%            xchat  [.] vread_hpet
$

Now we don't have to first lookup the list of modules and then, if
it fails, vmlinux symbols, its just a simple lookup for the map
then the symbols, just like for threads.

Reports generated using /proc/kallsyms and --vmlinux should provide
the same results, modulo the DSO name for sections other than
".text".

But they don't right now because things like:

 ffffffff81011c20-ffffffff81012068 system_call
 ffffffff81011c30-ffffffff81011c9b system_call_after_swapgs
 ffffffff81011c9c-ffffffff81011cb6 system_call_fastpath
 ffffffff81011cb7-ffffffff81011cbb ret_from_sys_call

I.e. overlapping symbols, again some ASM special case that we have
to fixup.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Mike Galbraith <efault@gmx.de>
LKML-Reference: <1254934136-8503-1-git-send-email-acme@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-10-08 19:27:11 +02:00
..
Documentation perf timechart: Add a power-only mode 2009-10-01 09:26:40 +02:00
util perf tools: Improve kernel/modules symbol lookup 2009-10-08 19:27:11 +02:00
.gitignore perf tools: .gitignore += perf*.html 2009-09-24 14:01:22 +02:00
builtin-annotate.c perf tools: Up the verbose level for some really verbose stuff 2009-10-08 19:27:10 +02:00
builtin-help.c perf: Enable more compiler warnings 2009-08-16 10:47:47 +02:00
builtin-list.c perf list: Fix large list output by using the pager 2009-08-13 09:05:48 +02:00
builtin-record.c perf tools: Merge trace.info content into perf.data 2009-10-07 08:36:10 +02:00
builtin-report.c perf tools: Up the verbose level for some really verbose stuff 2009-10-08 19:27:10 +02:00
builtin-sched.c perf tools: Improve thread comm resolution in perf sched 2009-10-08 16:56:33 +02:00
builtin-stat.c perf: Propagate term signal to child 2009-10-04 19:37:39 +02:00
builtin-timechart.c perf timechart: Add a power-only mode 2009-10-01 09:26:40 +02:00
builtin-top.c perf tools: Default to 1 KHz auto-sampling freq events 2009-10-06 15:41:09 +02:00
builtin-trace.c perf tools: Unify perf.data mapping and events handling 2009-10-08 16:56:32 +02:00
builtin.h perf: Add the timechart tool 2009-09-19 11:42:13 +02:00
command-list.txt perf: Add timechart help text and add timechart to "perf help" 2009-09-19 18:57:53 +02:00
CREDITS perf_counter tools: Add CREDITS file for Git contributors 2009-06-24 19:54:29 +02:00
design.txt perf_event: Provide vmalloc() based mmap() backing 2009-10-06 14:21:50 +02:00
Makefile perf tools: Unify perf.data mapping and events handling 2009-10-08 16:56:32 +02:00
perf.c perf: Add the timechart tool 2009-09-19 11:42:13 +02:00
perf.h perf: Do the big rename: Performance Counters -> Performance Events 2009-09-21 14:28:04 +02:00