Linux Trace Kernel
 help / color / mirror / Atom feed
From: John Ogness <john.ogness@linutronix.de>
To: Gabriele Monaco <gmonaco@redhat.com>,
	Alexei Starovoitov <alexei.starovoitov@gmail.com>,
	linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
	bpf@vger.kernel.org, Steven Rostedt <rostedt@goodmis.org>
Cc: Nam Cao <namcao@linutronix.de>, Wen Yang <wen.yang@linux.dev>,
	Tobias Schaffner <tobias.schaffner@siemens.com>,
	Viktor Malik <vmalik@redhat.com>
Subject: Re: [PATCH v2 10/15] tools/rv: Add BPF monitors
Date: Sat, 17 Oct 2026 17:23:06 +0206	[thread overview]
Message-ID: <87bj8s8ih9.fsf@jogness.linutronix.de> (raw)
In-Reply-To: <8B3FF026-6159-48CF-8FEA-AF2FACD2E4EB@redhat.com>

On 2026-10-17, Gabriele Monaco <gmonaco@redhat.com> wrote:
>> I am still not clear how the rv tool will replace the existing
>> in-kernel implementation. Right now violations call printk(), which
>> conveniently show up in kernel logs and consoles. More importantly,
>> there are the rtapp violation events, which makes it very easy to use
>> ftrace and perf features to record traces, take actions, generate
>> statistics, and dump backtraces on violations.
>
> The plan is to keep everything you'd now do with perf/ftrace as plain
> stdout of the RV tool. Right now you can see the same ftrace output
> using rv mon <monitor> -t for in-kernel monitors (only deterministic
> automata).

IMHO it would be a pity to lose support for ftrace/perf. I use these
tools extensively for my daily work evaluating real-time systems. Having
the rtapp RVmon integrated allows me to easily and naturally extend my
workflow to include rtapp violations. Plain stdout is hardly a
replacement for trace recordings that can be imported into existing
visualization and analysis tools.

> We are missing stack traces (which I'd optionally add only on errors)
> and perhaps other events (e.g. the -e in either tool if you aren't
> only interested in errors/events of the monitor).

I don't see the point of reinventing tools that already do the job
well. I do not mind if developers want to create their own tools that
provide some small subset of existing features. But I am concerned about
removing the in-kernel RV support for ftrace and perf.

>> Is it planned to pull all this out of the kernel but then somehow the
>> rv tool allows ftrace, perf, and console to continue to work with
>> violations? (For example, by somehow defining kprobes for violations
>> and writing violation information to /dev/kmsg?) Or is the rv tool
>> supposed to provide its own DIY variant of these features?
>
> My plan isn't particularly strict right now. I'm aiming to allow BPF
> monitors in the user space tool as an exploratory effort.  I don't
> think you would easily interact with ftrace/perf from those though.
>
> If that's a requirement, you could probably call a kfunc from BPF and
> attach a kprobe there. I would implement that from a reactor
> (violations only).

That sounds like it could work. As long as there are kprobes in the call
stack of violations, I am happy.

> For a pure printk reactor, I drafted an implementation that calls
> directly printk_deferred(), Alexei is suggesting to write to /dev/kmsg
> from user space what BPF passes.  Since you were the one suggesting
> having a real printk, would your use-case favour either solution? I'd
> expect some different latency if the log passes from BPF to /dev/kmsg,
> but I'm not sure that's an issue for you.

A delayed kernel record is better than none. Although I really do not
see why it cannot simply call printk_deferred() directly. It is safe and
lockless. And it has the advantage of appropriate timestamping when
compared to any other printk's that may be happening at that time.

If we are already adding kfuncs for panics and violations, why the
resistance to printks?

John

  reply	other threads:[~2026-10-17 15:17 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-01 15:20 [PATCH v2 00/15] rv: Add support for BPF monitors Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 01/15] sched: Add task enqueue/dequeue trace points Gabriele Monaco
2026-10-01 15:49   ` Peter Zijlstra
2026-10-02  7:09     ` Gabriele Monaco
2026-10-02 10:29       ` Peter Zijlstra
2026-10-02 11:55         ` Gabriele Monaco
2026-10-02 19:18           ` Peter Zijlstra
2026-10-02 19:40             ` Gabriele Monaco
2026-10-04  7:57             ` Steven Rostedt
2026-10-12 11:54               ` Peter Zijlstra
2026-10-04  7:45         ` Steven Rostedt
2026-10-12 11:49           ` Peter Zijlstra
2026-10-02  0:42   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 02/15] tools/rv: Skip empty pid error in selftest if command failed Gabriele Monaco
2026-10-02  0:42   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 03/15] rv: Refactor da_trace() functions to get strings internally Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 04/15] rv: Cast result of model_get_*_name() Gabriele Monaco
2026-10-13  6:14   ` Nam Cao
2026-10-13  8:15     ` Gabriele Monaco
2026-10-14  9:52     ` Gabriele Monaco
2026-10-14 10:02       ` Nam Cao
2026-10-01 15:20 ` [PATCH v2 05/15] tools/rv: Move argument parsing from in_kernel to utils Gabriele Monaco
2026-10-02  0:25   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 06/15] tools/build: Add a feature test for bpftool-btf Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 07/15] tools/rv: Implement BPF monitor discovery and listing Gabriele Monaco
2026-10-01 15:40   ` sashiko-bot
2026-10-02  0:42   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 08/15] tools/rv: Implement BPF monitor loading and tracing Gabriele Monaco
2026-10-01 15:41   ` sashiko-bot
2026-10-02  0:43   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 09/15] tools/rv: Copy stripped bpf_atomic.h from libarena Gabriele Monaco
2026-10-02  0:42   ` bot+bpf-ci
2026-10-07 12:59   ` Nam Cao
2026-10-08  9:00     ` Gabriele Monaco
2026-10-08 11:16       ` Nam Cao
2026-10-09 10:09         ` Gabriele Monaco
2026-10-11  0:43           ` Steven Rostedt
2026-10-12  7:43             ` Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 10/15] tools/rv: Add BPF monitors Gabriele Monaco
2026-10-01 15:55   ` sashiko-bot
2026-10-02  0:43   ` bot+bpf-ci
2026-10-06 13:29   ` Alexei Starovoitov
2026-10-08  9:54     ` Gabriele Monaco
2026-10-16 18:32       ` Alexei Starovoitov
2026-10-16 19:20         ` John Ogness
2026-10-17 10:42           ` Gabriele Monaco
2026-10-17 15:17             ` John Ogness [this message]
2026-10-17 16:09               ` Alexei Starovoitov
2026-10-17 16:56                 ` John Ogness
2026-10-17 10:48         ` Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 11/15] tools/rv: Define CONFIG_X86_64 statically for " Gabriele Monaco
2026-10-01 15:49   ` sashiko-bot
2026-10-01 15:20 ` [PATCH v2 12/15] tools/rv: Add reactors support to " Gabriele Monaco
2026-10-01 15:57   ` sashiko-bot
2026-10-02  0:43   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 13/15] verification/rvgen: Add support for " Gabriele Monaco
2026-10-02  0:25   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 14/15] tools/rv: Add selftest for rv bpf monitors Gabriele Monaco
2026-10-01 16:03   ` sashiko-bot
2026-10-02  0:43   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 15/15] verification/rvgen: Add selftest for rvgen -b Gabriele Monaco

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=87bj8s8ih9.fsf@jogness.linutronix.de \
    --to=john.ogness@linutronix.de \
    --cc=alexei.starovoitov@gmail.com \
    --cc=bpf@vger.kernel.org \
    --cc=gmonaco@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=namcao@linutronix.de \
    --cc=rostedt@goodmis.org \
    --cc=tobias.schaffner@siemens.com \
    --cc=vmalik@redhat.com \
    --cc=wen.yang@linux.dev \
    /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