Hi All,

I have been playing around with the Intel BTS support available in
perf and I have a number of questions about it.  I read through the
information on:

http://lwn.net/Articles/478047/

I only care about recording calls in the BTS.  Is there some way to
limit the BTS data collection to just calls?

I have been using the perf-3.6.10-2.fc17.x86_64 on Fedora 17, but seem
to get the same results with perf built from the linux mainline git
tree.  It seems to be missing much of the file and function
information in the perf report information. I attempt to collect some
trace data with a simple example like:


$ perf record -e branches:u -c 1 -d ls
..listing of directory ...
[ perf record: Woken up 8 times to write data ]
[ perf record: Captured and wrote 1.916 MB perf.data (~83705 samples) ]

However, sometimes it appears that the BTS data collection cause
segmentation faults like the following:

$ perf record -e branches:u -c 1 -d ls
..listing of directory ...
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.100 MB perf.data (~4384 samples) ]
ls: Segmentation fault

With a successful run the data should be analyzed with, but it doesn't
provide symbol mapping information:


$ perf script -f ip,addr,sym,dso,symoff --show-kernel-path
# ========
# captured on: Fri Jan  4 11:26:07 2013
# hostname : santana
# os release : 3.6.10-2.fc17.x86_64
# perf version : 3.6.10-2.fc17.x86_64
# arch : x86_64
# nrcpus online : 8
# nrcpus avail : 8
# cpudesc : Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz
# cpuid : GenuineIntel,6,58,9
# total memory : 3612396 kB
# cmdline : /usr/bin/perf record -e branches:u -c 1 -d ls 
# event : name = branches:u, type = 0, config = 0x4, config1 = 0x0, config2 = 
0x0, excl_usr = 0, excl_kern = 1, excl_host = 0, excl_guest = 0, precise_ip = 
0, id = { 335, 336, 337, 338, 339, 340, 341,
# HEADER_CPU_TOPOLOGY info available, use -I to display
# HEADER_NUMA_TOPOLOGY info available, use -I to display
# ========
#
 ffffffff8162713e sysret_check+0x4b 
(/usr/lib/debug/lib/modules/3.6.10-2.fc17.x86_64/vmlinux) =>       3439a0e090 
[unknown] ([unknown])
       3439a0e098 [unknown] ([unknown]) =>           43c6cf [unknown] 
([unknown])
           43c6dc [unknown] ([unknown]) =>           4121c0 [unknown] 
([unknown])
           4121c0 [unknown] ([unknown]) =>       34392baec0 [unknown] 
([unknown])
       34392baeca [unknown] ([unknown]) =>       34392bb080 [unknown] 
([unknown])
       34392bb0af [unknown] ([unknown]) =>       3439283ba0 [unknown] 
([unknown])
 ffffffff8161f429 irq_return+0x0 
(/usr/lib/debug/lib/modules/3.6.10-2.fc17.x86_64/vmlinux) =>       3439283ba0 
[unknown] ([unknown])
 ffffffff8161f429 irq_return+0x0 
(/usr/lib/debug/lib/modules/3.6.10-2.fc17.x86_64/vmlinux) =>       3439283ba0 
[unknown] ([unknown])
       3439283be6 [unknown] ([unknown]) =>       3439283c08 [unknown] 
([unknown])
       3439283c0b [unknown] ([unknown]) =>       3439283c19 [unknown] 
([unknown])
       3439283c1b [unknown] ([unknown]) =>       34392bb0b4 [unknown] 
([unknown])
       34392bb0b7 [unknown] ([unknown]) =>       34392bb1d0 [unknown] 
([unknown])
       34392bb1d7 [unknown] ([unknown]) =>       3439238170 [unknown] 
([unknown])
 ffffffff8161f429 irq_return+0x0 
(/usr/lib/debug/lib/modules/3.6.10-2.fc17.x86_64/vmlinux) =>       3439238170 
[unknown] ([unknown])


It looks like the instructions don't mention the "-m" option for the
perf record the results look better with it:

$ perf record -e branches:u -m 128 -c 1 -d ls
...listing....
[ perf record: Woken up 8 times to write data ]
[ perf record: Captured and wrote 1.964 MB perf.data (~85807 samples) ]

$ perf script -f ip,addr,sym,dso,symoff --show-kernel-path
# ========
# captured on: Fri Jan  4 11:33:07 2013
# hostname : santana
# os release : 3.6.10-2.fc17.x86_64
# perf version : 3.6.10-2.fc17.x86_64
# arch : x86_64
# nrcpus online : 8
# nrcpus avail : 8
# cpudesc : Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz
# cpuid : GenuineIntel,6,58,9
# total memory : 3612396 kB
# cmdline : /usr/bin/perf record -e branches:u -m 128 -c 1 -d ls 
# event : name = branches:u, type = 0, config = 0x4, config1 = 0x0, config2 = 
0x0, excl_usr = 0, excl_kern = 1, excl_host = 0, excl_guest = 0, precise_ip = 
0, id = { 399, 400, 401, 402, 403, 404, 405,
# HEADER_CPU_TOPOLOGY info available, use -I to display
# HEADER_NUMA_TOPOLOGY info available, use -I to display
# ========
#
 ffffffff8162713e sysret_check+0x4b 
(/usr/lib/debug/lib/modules/3.6.10-2.fc17.x86_64/vmlinux) =>       3439a0e090 
__read_nocancel+0x7 (/usr/lib64/libpthread-2.15.so)
       3439a0e098 __read_nocancel+0xf (/usr/lib64/libpthread-2.15.so) =>        
   43c6cf perf_evlist__prepare_workload+0x1af (/usr/bin/perf)
           43c6dc perf_evlist__prepare_workload+0x1bc (/usr/bin/perf) =>        
   4121c0 execvp@plt+0x0 (/usr/bin/perf)
           4121c0 execvp@plt+0x0 (/usr/bin/perf) =>       34392baec0 execvp+0x0 
(/usr/lib64/libc-2.15.so)
       34392baeca execvp+0xa (/usr/lib64/libc-2.15.so) =>       34392bb080 
__execvpe+0x0 (/usr/lib64/libc-2.15.so)
       34392bb0af __execvpe+0x2f (/usr/lib64/libc-2.15.so) =>       3439283ba0 
__strchr_sse2+0x0 (/usr/lib64/libc-2.15.so)


However, a little ways into the output start seeing many [unknown] again:


ffffffff8161f429 irq_return+0x0 
(/usr/lib/debug/lib/modules/3.6.10-2.fc17.x86_64/vmlinux) =>       343928f580 
[unknown] ([unknown])
       343928f5ee [unknown] ([unknown]) =>       34392bb296 [unknown] 
([unknown])
       34392bb2b2 [unknown] ([unknown]) =>       343928dee0 [unknown] 
([unknown])
       343928deec [unknown] ([unknown]) =>       343928def9 [unknown] 
([unknown])
       343928df24 [unknown] ([unknown]) =>       343928df34 [unknown] 
([unknown])
       343928df5b [unknown] ([unknown]) =>       34392bb2b7 [unknown] 
([unknown])
       34392bb2c3 [unknown] ([unknown]) =>       34392baa50 [unknown] 
([unknown])


Are there some other combination of arguments that need to be passed
to "perf record" or "perf report" to get appropriate BTS data mapped
back to files and function?

-Will
--
To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to