Hi
On 19 May 2014 16:08, Prankul Garg prankul.iiitm@gmail.com wrote:
Jean Pihet <jean.pihet@...> 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@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@axp-linaro:/home/linaro/linaro/kernel/linux# ./tools/perf/perf buildid-list 6db809b8adab308f64037970799dc836f6b96422 vmlinux root@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.
Also your build is quite old, a lot of changes went into perf since 3.4.
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@...> wrote:
Hello,
On 15 May 2014 07:36, sneha priya <sneha.cse@...> wrote:
Hello,
There is an issue related to perf which I am facing since 15 days.
Hoping
that the great minds here will help me to solve this.
I have a requirement to make perf tool work on a device having ARM architecture. But, on recording the tracepoint events and then running ./perf report, it shows the shared objects name as [unknown] and
Symbols as
00000, whereas for software and hardware events I do not experience
this
issue. I have cross compiled the perf tool available on mailine and ported it
on a
device having ARM architecture.
Output on ARM based device with kernel 3.4.
./perf record -e kmem:kmalloc cal
[ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.007 MB perf.data (~321 samples) ]
./perf report
Overhead Command Shared Object Symbol ........................... ................................ ........................................... 40.78% cal [unknown] [.]00000000 31.6% cal [unknown] [.]00000000
[...]
On ubuntu 12.04, system (kernel 3.10) it works perfectly fine.
Output on x86 architecture
./perf record -e kmem:kmalloc gcalctool
[ perf record: Woken up 3 times to write data ] [ perf record: Captured and wrote 0.27 MB perf.data (~845 samples) ]
./perf report --stdio
Overhead Command
Shared
Object Symbol ........................... ................................ ........................................... 96.55% cal [kernel.kallsyms] [k] kmem_cache_alloc_trace 3.45% cal [kernel.kallsyms] [.]__kmalloc
[...]
Keenly, awaiting for you help.
There are a few things to check. Note that the 3.4 kernel is OK wrt perf and tracepoints but is quite old, the recent development now happens on 3.15.
- Do you have kallsyms enabled in your kernel (CONFIG_KALLSYMS=y)?
- Are there warnings issued by perf record, e.g. access to kernel
symbols etc?
- perf report needs to know about your vmlinux image (the one that
contains the debug symbols etc in the root directory of the kernel build). You can use '-k <file>' or '--vmlinux=<file>', cf. perf report --help.
- You can dump the samples from perf.data using perf report -D. The
entries with 'PERF_RECORD_SAMPLE(IP, 2)' are for the user space apps.
- The '-v' option gives more info. This can be used multiple times ('-
vv').
Thanks.
Sneha.
Regards, Jean
linaro-dev mailing list linaro-dev@... http://lists.linaro.org/mailman/listinfo/linaro-dev
linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev