[lkml]   [2014]   [Oct]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subject[PATCH perf/core 0/6] perf-probe: Bugfix and add new options for cache

Here is a sereis of patches for enabling "event cache" feature
to perf probe. Brendan gives me this cool idea, thanks! :)

In this series, I added following options/features;
- --output option
We can save the probe definition command for given probe-event
instead of setting up the local tracing/kprobe_events.

- --no-inlines option
We can avoid searching the inline functions in debuginfo. Usually
useful with wildcards since the wildcards will hit a huge amount
of probe-points.

- $params special probe argument
$params is expanded to function parameters only, no locally defined
variables. This is useful for function-call tracing.

- wildcard support for function name
Wildcard support is the key feature for this idea. Now we can use
'*foo*' for function name to define the probe-point.

So by using all of them, we can make an "event cache" file on all
functions (except for inlined functions) as below.

# perf probe --max-probes=100000 --no-inlines -a '* $params' -o event.cache

builds "event.cache" file in which event settings for
all function entries, like below;

p:probe/reset_early_page_tables _text+12980741
p:probe/copy_bootdata _text+12980830 real_mode_data=%di:u64
p:probe/exit_amd_microcode _text+14692680
p:probe/early_make_pgtable _text+12981274 address=%di:u64
p:probe/x86_64_start_reservations _text+12981700 real_mode_data=%di:u64
p:probe/x86_64_start_kernel _text+12981744 real_mode_data=%di:u64
p:probe/reserve_ebda_region _text+12982117

This event.cache file will be big (but much smaller than native
debuginfo :) ) if your kernel have many option embedded.
Anyway, you can compress it too.

# wc -l event.cache
33813 event.cache
# ls -sh event.cache
2.3M event.cache
# ls -sh event.cache.gz
464K event.cache.gz

For setting up a probe event, you can grep the function name
and write it to tracing/kprobe_events, as below;

# zcat event.cache.gz | \
grep probe/vfs_symlink > /sys/kernel/debug/tracing/kprobe_events

This can be applied for the remote machine only if the machine
runs on completely same kernel binary. Perhaps, we need some
helper tool to check it.

Thank you,


Masami Hiramatsu (6):
[BUGFIX] perf-probe: Fix to handle optimized not-inlined but has no instance
[DOC] perf-probe: Update perf-probe document
perf-probe: Add --output option to write commands in a standard file
perf-probe: Add --no-inlines option to avoid searching inline functions
perf-probe: Support $params special probe argument
perf-probe: Support glob wildcards for function name

tools/perf/Documentation/perf-probe.txt | 25 ++++++++++
tools/perf/builtin-probe.c | 32 +++++++++++++
tools/perf/util/dwarf-aux.c | 31 +++++++++++++
tools/perf/util/dwarf-aux.h | 6 +++
tools/perf/util/probe-event.c | 73 +++++++++++++++++++++++--------
tools/perf/util/probe-event.h | 4 +-
tools/perf/util/probe-finder.c | 74 +++++++++++++++++++------------
tools/perf/util/probe-finder.h | 6 ++-
tools/perf/util/util.h | 4 ++
9 files changed, 202 insertions(+), 53 deletions(-)

Software Platform Research Dpt. Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory

 \ /
  Last update: 2014-10-31 12:21    [W:0.095 / U:1.720 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site