From: Tomas Glozar <tglozar@redhat.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Linux Trace Kernel <linux-trace-kernel@vger.kernel.org>,
John Kacur <jkacur@redhat.com>,
Luis Goncalves <lgoncalv@redhat.com>,
Costa Shulyupin <costa.shul@redhat.com>,
Crystal Wood <crwood@redhat.com>,
Wander Lairson Costa <wander@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Tomas Glozar <tglozar@redhat.com>
Subject: [PATCH v3 0/7] rtla/timerlat: Add --bpf-action option
Date: Mon, 27 Oct 2025 16:33:54 +0100 [thread overview]
Message-ID: <20251027153401.1039217-1-tglozar@redhat.com> (raw)
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/20251006143100.137255-1-tglozar@redhat.com/
v3 changes:
- Add tests/bpf/bpf_action_map.c to test commit (forgot to run
git add before).
v2 changes:
- Properly bpf__object_close() also when bpf__object_load() fails.
- Use goto for error paths in timerlat_load_bpf_action_program().
- Remove unneeded NULLing of obj and prog in timerlat_bpf_init().
- Add entry to Makefile to build example.
- Add test for BPF actions.
- Rename sample/ directory to example/, also in docs.
- Run Test::Harness in verbose mode during "make check".
Thanks to Crystal and Wander for their input.
Tomas Glozar (7):
rtla/timerlat: Support tail call from BPF program
rtla/timerlat: Add --bpf-action option
rtla/timerlat: Add example for BPF action program
rtla/tests: Test BPF action program
rtla/tests: Run Test::Harness in verbose mode
Documentation/rtla: Rename sample/ to example/
Documentation/rtla: Document --bpf-action option
.../tools/rtla/common_timerlat_options.rst | 22 ++++++-
tools/tracing/rtla/Makefile | 19 +++++-
.../rtla/example/timerlat_bpf_action.c | 16 +++++
.../rtla/{sample => example}/timerlat_load.py | 0
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 | 66 +++++++++++++++++++
tools/tracing/rtla/src/timerlat_bpf.h | 7 +-
tools/tracing/rtla/src/timerlat_hist.c | 5 ++
tools/tracing/rtla/src/timerlat_top.c | 5 ++
tools/tracing/rtla/tests/bpf/bpf_action_map.c | 25 +++++++
tools/tracing/rtla/tests/engine.sh | 1 -
tools/tracing/rtla/tests/timerlat.t | 15 +++++
14 files changed, 207 insertions(+), 10 deletions(-)
create mode 100644 tools/tracing/rtla/example/timerlat_bpf_action.c
rename tools/tracing/rtla/{sample => example}/timerlat_load.py (100%)
create mode 100644 tools/tracing/rtla/tests/bpf/bpf_action_map.c
--
2.51.0
next reply other threads:[~2025-10-27 15:34 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-27 15:33 Tomas Glozar [this message]
2025-10-27 15:33 ` [PATCH v3 1/7] rtla/timerlat: Support tail call from BPF program Tomas Glozar
2025-11-03 14:23 ` Wander Lairson Costa
2025-10-27 15:33 ` [PATCH v3 2/7] rtla/timerlat: Add --bpf-action option Tomas Glozar
2025-11-03 14:44 ` Wander Lairson Costa
2025-10-27 15:33 ` [PATCH v3 3/7] rtla/timerlat: Add example for BPF action program Tomas Glozar
2025-10-27 15:33 ` [PATCH v3 4/7] rtla/tests: Test " Tomas Glozar
2025-11-03 15:10 ` Wander Lairson Costa
2025-11-03 15:17 ` Tomas Glozar
2025-10-27 15:33 ` [PATCH v3 5/7] rtla/tests: Run Test::Harness in verbose mode Tomas Glozar
2025-11-03 15:11 ` Wander Lairson Costa
2025-10-27 15:34 ` [PATCH v3 6/7] Documentation/rtla: Rename sample/ to example/ Tomas Glozar
2025-11-03 13:41 ` Wander Lairson Costa
2025-10-27 15:34 ` [PATCH v3 7/7] Documentation/rtla: Document --bpf-action option Tomas Glozar
2025-11-03 13:44 ` Wander Lairson Costa
2025-10-31 13:49 ` [PATCH v3 0/7] rtla/timerlat: Add " Crystal Wood
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251027153401.1039217-1-tglozar@redhat.com \
--to=tglozar@redhat.com \
--cc=acme@kernel.org \
--cc=costa.shul@redhat.com \
--cc=crwood@redhat.com \
--cc=jkacur@redhat.com \
--cc=lgoncalv@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=wander@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).