[PATCH 0/8] bpf: Add fprobe link

Jiri Olsa
2022-02-02T13:53:39Z

hi,
this patchset adds new link type BPF_LINK_TYPE_FPROBE that attaches kprobe
program through fprobe API [1] instroduced by Masami.

The fprobe API allows to attach probe on multiple functions at once very
fast, because it works on top of ftrace. On the other hand this limits
the probe point to the function entry or return.

With bpftrace support I see following attach speed:

# perf stat --null -r 5 ./src/bpftrace -e 'kprobe:x* { } i:ms:1 { exit(); } '
Attaching 2 probes...
Attaching 3342 functions
...

1.4960 +- 0.0285 seconds time elapsed ( +- 1.91% )

Also available at:
https://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
bpf/fprobe_link

thanks,
jirka

[1] https://lore.kernel.org/bpf/20220202162925.bd74e7970fc35cb4236eef48@kernel.org/T/#t
---
Jiri Olsa (8):
bpf: Add support to attach kprobe program with fprobe
bpf: Add bpf_get_func_ip kprobe helper for fprobe link
bpf: Add bpf_cookie support to fprobe
libbpf: Add libbpf__kallsyms_parse function
libbpf: Add bpf_link_create support for multi kprobes
libbpf: Add bpf_program__attach_kprobe_opts for multi kprobes
selftest/bpf: Add fprobe attach test
selftest/bpf: Add fprobe test for bpf_cookie values

include/linux/bpf.h | 2 +
include/linux/bpf_types.h | 1 +
include/uapi/linux/bpf.h | 14 +++++
kernel/bpf/syscall.c | 327 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
kernel/bpf/verifier.c | 19 +++++-
kernel/trace/bpf_trace.c | 32 +++++++++-
tools/include/uapi/linux/bpf.h | 14 +++++
tools/lib/bpf/bpf.c | 7 +++
tools/lib/bpf/bpf.h | 9 ++-
tools/lib/bpf/libbpf.c | 198 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
tools/lib/bpf/libbpf_internal.h | 5 ++
tools/testing/selftests/bpf/prog_tests/bpf_cookie.c | 73 ++++++++++++++++++++++
tools/testing/selftests/bpf/prog_tests/fprobe_test.c | 117 +++++++++++++++++++++++++++++++++++
tools/testing/selftests/bpf/progs/fprobe.c | 58 ++++++++++++++++++
tools/testing/selftests/bpf/progs/fprobe_bpf_cookie.c | 62 +++++++++++++++++++
15 files changed, 902 insertions(+), 36 deletions(-)
create mode 100644 tools/testing/selftests/bpf/prog_tests/fprobe_test.c
create mode 100644 tools/testing/selftests/bpf/progs/fprobe.c
create mode 100644 tools/testing/selftests/bpf/progs/fprobe_bpf_cookie.c