perf tools: Add Intel BTS support
Intel BTS support fits within the new auxtrace infrastructure.
Recording is supporting by identifying the Intel BTS PMU, parsing
options and setting up events.
Decoding is supported by queuing up trace data by thread and then
decoding synchronously delivering synthesized event samples into the
session processing for tools to consume.
E.g:
[root@zoo ~]# perf record --per-thread -e intel_bts// ls
anaconda-ks.cfg b bin lib64 libexec new old perf.data
perf.data.old stream_test tg.run
[ perf record: Woken up 2 times to write data ]
[ perf record: Captured and wrote 4.242 MB perf.data ]
[root@zoo ~]# perf evlist
intel_bts//
dummy:u
[root@zoo ~]# perf evlist -v
intel_bts//: type: 7, size: 112, { sample_period, sample_freq }: 1,
sample_type: IP|TID|IDENTIFIER, read_format: ID, disabled: 1,
enable_on_exec: 1, sample_id_all: 1, exclude_guest: 1 dummy:u:
type: 1, size: 112, config: 0x9, { sample_period, sample_freq }: 1,
sample_type: IP|TID|IDENTIFIER, read_format: ID, disabled: 1,
exclude_kernel: 1, exclude_hv: 1, mmap: 1, comm: 1, enable_on_exec: 1,
task: 1, sample_id_all: 1, mmap2: 1, comm_exec: 1
[root@zoo ~]# perf report --stdio
# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 0 of event 'intel_bts//'
# Event count (approx.): 0
#
# Overhead Command Shared Object Symbol
# ........ ....... ............. ......
#
# Samples: 0 of event 'dummy:u'
# Event count (approx.): 0
#
# Overhead Command Shared Object Symbol
# ........ ....... ............. ......
#
# Samples: 184K of event 'branches'
# Event count (approx.): 184522
#
# Overhead Command Shared Object Symbol
# ........ ....... .................. ..............................................
#
7.36% ls [kernel.kallsyms] [.] unmap_single_vma
4.69% ls ld-2.20.so [.] strcmp
4.66% ls libc-2.20.so [.] _dl_addr
3.43% ls [kernel.kallsyms] [.] change_protection
3.01% ls ld-2.20.so [.] do_lookup_x
2.18% ls [kernel.kallsyms] [.] filemap_map_pages
2.09% ls ld-2.20.so [.] _dl_name_match_p
1.93% ls ld-2.20.so [.] _dl_lookup_symbol_x
1.91% ls [kernel.kallsyms] [.] page_remove_rmap
1.72% ls [kernel.kallsyms] [.] do_set_pte
1.48% ls ld-2.20.so [.] _dl_relocate_object
1.34% ls [kernel.kallsyms] [.] mem_cgroup_begin_page_stat
1.11% ls [kernel.kallsyms] [.] page_add_file_rmap
1.00% ls [kernel.kallsyms] [.] mark_page_accessed
0.97% ls [kernel.kallsyms] [.] perf_event_aux
0.95% ls [kernel.kallsyms] [.] handle_mm_fault
0.94% ls [kernel.kallsyms] [.] get_page_from_freelist
<SNIP>
[root@zoo ~]# perf record --per-thread -e intel_bts//u ls
<SNIP>
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 1.278 MB perf.data ]
[root@zoo ~]# perf report --stdio
<SNIP>
# Samples: 55K of event 'branches:u'
# Event count (approx.): 55165
#
# Overhead Command Shared Object Symbol
# ........ ....... .................. ......................................
#
15.69% ls ld-2.20.so [.] strcmp
15.58% ls libc-2.20.so [.] _dl_addr
10.05% ls ld-2.20.so [.] do_lookup_x
6.98% ls ld-2.20.so [.] _dl_name_match_p
6.46% ls ld-2.20.so [.] _dl_lookup_symbol_x
4.95% ls ld-2.20.so [.] _dl_relocate_object
2.96% ls ls [.] quotearg_buffer_restyled
2.78% ls libc-2.20.so [.] getenv
1.91% ls ld-2.20.so [.] _dl_cache_libcmp
1.76% ls libc-2.20.so [.] __memmove_sse2
1.75% ls ld-2.20.so [.] check_match.isra.0
1.47% ls ld-2.20.so [.] _dl_map_object_deps
1.27% ls ld-2.20.so [.] _dl_map_object_from_fd
1.17% ls ls [.] quote_name
1.16% ls ld-2.20.so [.] _dl_check_map_versions
<SNIP>
0.19% ls [kernel.kallsyms] [.] entry_SYSCALL_64_fastpath
0.19% ls [kernel.kallsyms] [.] native_irq_return_iret
0.19% ls libc-2.20.so [.] _IO_file_xsputn@@GLIBC_2.2.5
<SNIP>
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Link: http://lkml.kernel.org/r/1437150840-31811-9-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
11 files changed