Jean Pihet <jean.pihet@...> writes:
Hi
On 19 May 2014 16:08, Prankul Garg <prankul.iiitm@...> wrote:
Jean Pihet <jean.pihet <at> ...> writes:
Hello,
Indeed there is a problem in the ARM code for tracepoints. After a good discussion with the perf maintainers a solution has be found, cf. http://www.spinics.net/lists/arm-kernel/msg332293.html.
Can you check if this fixes the problem? It does on my side on 3.15-
rc4.
Hi Jean,
yes, it solved the problem but partially, i am getting different outputs
for
x86 and ARM.
On x86(3.10.28):
./perf record -e kmem:kmalloc cal [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.009 MB perf.data (~381 samples) ]
./perf report # Overhead Command Shared Object Symbol # ........ ....... ................. .......................... # 96.77% cal [kernel.kallsyms] [k] kmem_cache_alloc_trace 3.23% cal [kernel.kallsyms] [k] __kmalloc
./perf report -v 96.77% cal /lib/modules/3.10.28+/build/vmlinux
0xffffffff81166f6d
v [k] kmem_cache_alloc_trace 3.23% cal /lib/modules/3.10.28+/build/vmlinux
0xffffffff81166b24
v [k] __kmalloc
./perf buildid-list aef9a24fcddff67cd67bcc1fd27dbeaf86d35487 [kernel.kallsyms]
but on ARM(3.4.0):
./perf record -e kmem:kmalloc cal [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.004 MB perf.data (~192 samples) ]
./perf report # Overhead Command Shared Object Symbol # ........ ....... ................. .......................... # 100.00% cal [ks8851] [k] 0x01247890
./perf report -v 100.00% cal /lib/modules/3.4.0/.../ks8851.ko 0x1247890 l
[k]
0x01247890
./perf buildid-list d0898c01486575dddafc6686240186bdb4b4430a
/lib/modules/3.4.0/.../ks8851.ko
that means on ARM, it is not getting the buildid for [kernel.kallsyms].
Are you getting the same output for ARM and x86 ??
Yes. Here is the output I have:
root <at> axp-linaro:/home/linaro/linaro/kernel# ./linux/tools/perf/perf
report -v
build id event received for vmlinux:
6db809b8adab308f64037970799dc836f6b96422
Looking at the vmlinux_path (6 entries long) Using /proc/kallsyms for symbols # To display the perf.data header info, please use --header/--header-only
option
# # Samples: 12 of event 'kmem:kmalloc' # Event count (approx.): 12 # # Overhead Command Shared Object
Sy
# ........ ............ .................
...................................
# 91.67% stress_bt_v7 [kernel.kallsyms] 0xc00f1548 k [k]
kmem_cache_alloc_t
8.33% stress_bt_v7 [kernel.kallsyms] 0xc00f1400 k [k] __kmalloc
# # (For a higher level overview, try: perf report --sort comm,dso) #
root <at> axp-linaro:/home/linaro/linaro/kernel/linux# ./tools/perf/perf buildid-list 6db809b8adab308f64037970799dc836f6b96422 vmlinux root <at> axp-linaro:/home/linaro/linaro/kernel/linux#
perf is looking for symbols in vmlinux (if present in the current dir or specified in the command line) and if not found from kallsyms. So if I run 'perf report' from the kernel root dir, the symbols are from vmlinux; if I run it from elsewhere the symbols are from kallsyms.
Hi Jean,
yes, I am getting your point regarding vmlinux or /proc/kallsyms. For cross checking it i also run command ./perf report -k /proc/kallsyms or ./perf report --vmlinux /path/to/vmlinux
but it didn't work for me.
when i debug the same and just print the statement, *__dsos__findnew: (function defined in "tools/perf/util/dso.c") which dsos it is finding.
So during perf record
# ./perf record -e kmem:kmalloc cal dsos__findnew: [kernel.kallsyms] dsos__findnew: [ks8851] dsos__findnew: [exfat_fs]
# ./perf report dsos__findnew: [ks8851] (say list of dsos 'd1') # cmdline : /opt/perf/perf record -e kmem:mm_page_alloc cal # event : name = kmem:mm_page_alloc, type = 2, config = 0x69, config1 = 0x0, config2 = 0x0, excl_usr = 0, excl_kern = 0, excl_host = 0, excl_guest = 1, precise_ip = 0 # pmu mappings: cpu = 4, software = 1, tracepoint = 2, breakpoint = 5 # ======== #
dsos__findnew: [kernel.kallsyms] dsos__findnew: [ks8851] ..and many more (say list of dsos 'd2')
Now it matches the 'd1' and 'd2', and those dsos which matches,of those corresponding buildid is generated.
# Overhead Command Shared Object Symbol # ........ ....... ................. .......................... # 100.00% cal [ks8851] [k] 0x01247890
Also your build is quite old, a lot of changes went into perf since 3.4.
I have also tried the same on kernel 3.10.17 but having the same issue. Since i'm working for a specific product, it's not easy for me to move on 3.15. Is TRACEPOINT events working verified on 3.15 only before that, wasn't it working ??
Regards, Jean
regards, Prankul Garg
The patch is under review by the ARM experts and hopefully should be merged soon.
Regards, Jean
On 16 May 2014 09:34, Jean Pihet <jean.pihet <at> ...> wrote: