Re: perf probe: Seaching the cache automatically

From: Masami Hiramatsu
Date: Thu Jul 14 2016 - 03:59:23 EST


On Wed, 13 Jul 2016 16:11:37 -0300
Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> wrote:

> Hi Masami,
>
> While reviewing your latest patchkit I figured out I left some
> sdt entries in my cache, cool! Tried to use but:
>
> [root@jouet 22]# perf probe --cache --list
> /usr/lib64/libc-2.23.so (88686319c72f1a9d9cd514af519aa5602880bab2):
> sdt_libc:setjmp=setjmp
> sdt_libc:longjmp=longjmp
> sdt_libc:longjmp_target=longjmp_target
> sdt_libc:memory_arena_reuse_free_list=memory_arena_reuse_free_list
> sdt_libc:memory_heap_new=memory_heap_new
> sdt_libc:memory_sbrk_less=memory_sbrk_less
> sdt_libc:memory_arena_reuse_wait=memory_arena_reuse_wait
> sdt_libc:memory_arena_reuse=memory_arena_reuse
> sdt_libc:memory_arena_new=memory_arena_new
> sdt_libc:memory_arena_retry=memory_arena_retry
> sdt_libc:memory_heap_free=memory_heap_free
> sdt_libc:memory_heap_less=memory_heap_less
> sdt_libc:memory_heap_more=memory_heap_more
> sdt_libc:memory_sbrk_more=memory_sbrk_more
> sdt_libc:memory_malloc_retry=memory_malloc_retry
> sdt_libc:memory_mallopt_free_dyn_thresholds=memory_mallopt_free_dyn_thresholds
> sdt_libc:memory_realloc_retry=memory_realloc_retry
> sdt_libc:memory_memalign_retry=memory_memalign_retry
> sdt_libc:memory_calloc_retry=memory_calloc_retry
> sdt_libc:memory_mallopt=memory_mallopt
> sdt_libc:memory_mallopt_mxfast=memory_mallopt_mxfast
> sdt_libc:memory_mallopt_arena_max=memory_mallopt_arena_max
> sdt_libc:memory_mallopt_arena_test=memory_mallopt_arena_test
> sdt_libc:memory_mallopt_mmap_max=memory_mallopt_mmap_max
> sdt_libc:memory_mallopt_mmap_threshold=memory_mallopt_mmap_threshold
> sdt_libc:memory_mallopt_top_pad=memory_mallopt_top_pad
> sdt_libc:memory_mallopt_trim_threshold=memory_mallopt_trim_threshold
> sdt_libc:memory_mallopt_perturb=memory_mallopt_perturb
> sdt_libc:memory_mallopt_check_action=memory_mallopt_check_action
> sdt_libc:lll_lock_wait_private=lll_lock_wait_private
> [root@jouet 22]#
>
> [root@jouet 22]# perf record --event sdt_libc:memory_heap_new -a
> event syntax error: 'sdt_libc:memory_heap_new'
> \___ unknown tracepoint
>
> Error: File /sys/kernel/debug/tracing/events/sdt_libc/memory_heap_new not found.
> Hint: Perhaps this kernel misses some CONFIG_ setting to enable this feature?.
>
> Run 'perf list' for a list of valid events
>
> Usage: perf record [<options>] [<command>]
> or: perf record [<options>] -- <command> [<options>]
>
> -e, --event <event> event selector. use 'perf list' to list available events
> [root@jouet 22]#
>
> So probably I need to do something else, will dig that, scratching my head, as
> my expectation was that it would look at that cache and pick things from there,
> etc. Perhaps this is in a patch in this series, will check...

Ah, yes, that is currently under development. What happened in the series is I dropped
direct SDT record, because I felt it was not prepared to be merged. This is why
perf list still doesn't show the SDT events. (only perf-probe shows it)

So, currently, you have to use perf-probe to set up SDT events as same as
other dynamic events. So, before run the perf record, please run below command.

# perf probe sdt_libc:memory_heap_new

Then you can record the event.

Thanks,

--
Masami Hiramatsu <mhiramat@xxxxxxxxxx>