Re: [RFC PATCH v2 2/3] tracefs: add instances support for uprobe events

From: Steven Rostedt
Date: Mon Aug 01 2016 - 17:47:37 EST


On Thu, 28 Jul 2016 02:57:38 +0530
Hari Bathini <hbathini@xxxxxxxxxxxxxxxxxx> wrote:

> If a uprobe event is set on a library function, and if a similar uprobe
> event trace is needed for a container, a duplicate is created leaving
> the uprobe list with multiple entries of the same function:
>
> $ perf probe --list
> probe_libc:malloc (on 0x80490 in /lib64/libc.so.6)
> probe_libc:malloc_1 (on __libc_malloc in /lib64/libc.so.6)
> $
>
> This can soon get out of hand if multiple containers want to probe the
> same function/address in their libraries. This patch tries to resolve this
> by adding uprobe event trace files to every new instance. Currently, perf
> tool can leverage this by using --debugfs-dir option - something like
> (assuming instance dir name is 'tracing'):
>
> $ perf --debugfs-dir=$MOUNT_PNT/instances probe /lib64/libc.so.6 malloc
> $
> $
> $ perf --debugfs-dir=$MOUNT_PNT/instances probe --list
> probe_libc:malloc (on __libc_malloc in /lib64/libc.so.6)
> $
>
> New uprobe events can be added to the uprobe_events file under the instance
> directory and the profile information for these events will be available in
> uprobe_profile file in the same instance directory.

Hmm, this does change the behavior of normal instances.

# cd /sys/kernel/debug/tracing
# echo 'p /bin/bash:0x41adf0' > uprobe_events
# ls events/uprobes
enable filter p_bash_0x41adf0

# mkdir instances/foo
# ls instances/foo/events/uprobes
ls: cannot access instances/foo/events/uprobes: No such file or directory

Usually, instances will have the same events as the top level
directory. This will make uprobes, and only uprobes different. I'm not
sure if this is a bad thing or not, I'll have to think about it more.
But what would it take to have this only differ for containers, and not
normal instances?

-- Steve