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:





_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to