This patchset extends rtla-timerlat's BPF support with the option of executing a user-supplied BPF program on latency threshold overflow.
See the supplied example and documentation for how to create a program. bpf_tail_call() is used to chain the program with the built-in BPF sample collection program, if the threshold is hit. The feature can be used for both in-kernel data collection and sending signals to userspace directly from the kernel, if the kernel version allows it. Note: The patchset will have to be rebased on top of [1], or vice versa, since they both touch stop_tracing() ([1] adds one call of it, and this patchset adds an extra argument to it). I have contemplated adding this as --on-threshold bpf,... but it does not fit the existing actions infrastructure very well, since the action happens in the BPF program, not in RTLA, and only one BPF action is supported. [1] https://lore.kernel.org/linux-trace-kernel/[email protected]/ Tomas Glozar (4): rtla/timerlat: Support tail call from BPF program rtla/timerlat: Add --bpf-action option rtla/timerlat: Add example for BPF action program Documentation/rtla: Document --bpf-action option .../tools/rtla/common_timerlat_options.rst | 18 +++++ .../tracing/rtla/sample/timerlat_bpf_action.c | 16 +++++ tools/tracing/rtla/src/timerlat.bpf.c | 23 ++++++- tools/tracing/rtla/src/timerlat.c | 11 +++ tools/tracing/rtla/src/timerlat.h | 2 +- tools/tracing/rtla/src/timerlat_bpf.c | 67 +++++++++++++++++++ tools/tracing/rtla/src/timerlat_bpf.h | 7 +- tools/tracing/rtla/src/timerlat_hist.c | 5 ++ tools/tracing/rtla/src/timerlat_top.c | 5 ++ 9 files changed, 149 insertions(+), 5 deletions(-) create mode 100644 tools/tracing/rtla/sample/timerlat_bpf_action.c -- 2.51.0
