From: Steven Rostedt <rostedt@goodmis.org>
To: Masami Hiramatsu <mhiramat@kernel.org>
Cc: "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@gmail.com>,
linux-trace-devel@vger.kernel.org, linux-kernel@vger.kernel.org,
tom.zanussi@linux.intel.com,
Daniel Bristot de Oliveira <bristot@redhat.com>
Subject: Re: [RFC] [RFC] trace: Add kprobe on tracepoint
Date: Fri, 6 Aug 2021 23:54:13 -0400 [thread overview]
Message-ID: <20210806235413.61c78c57@oasis.local.home> (raw)
In-Reply-To: <20210807102846.4d4f88b157deb26b9345fab5@kernel.org>
On Sat, 7 Aug 2021 10:28:46 +0900
Masami Hiramatsu <mhiramat@kernel.org> wrote:
> Hmm, sorry, I rather like to use synthetic event with trigger action,
> since this is not a kprobe.
Correct, but I don't think it matches synthetic events either.
> Can you change your idea to use trigger action with synthetic event?
>
> For example, if we have a "trace" action in the trigger action,
>
> echo "eopen char filename[]" >> synthetic_events
> echo "trace:eopen,filename.ustring" >> events/syscalls/sys_enter_openat/trigger
>
> A new action is,
> trace:SYNTH_EVENT,PARAM(s) [if FILTER]
> and
> .ustring/.string modifier for the PARAMS.
>
> I think this matches the current dynamic event model, and can extend
> programmability of the ftrace, and keeps dynamic events simple.
But we want to follow all the features of kprobes. This isn't about
just taking existing fields. In fact, we want fields that are not
available from the event. Here's an idea of what we want to do:
echo 'e:hr_nr_events timer.hrtimer_expire_entry nr_events=+0x58(+0(+0x30($hrtimer))):u32' > kprobe_events
echo 1 > events/kprobes/enable
cat trace
<idle>-0 [002] d.h2 937.412239: hr_nr_events: (0) nr_events=38380
<idle>-0 [000] d.h2 937.412239: hr_nr_events: (0) nr_events=930268
bash-1409 [001] d.h1 937.412239: hr_nr_events: (0) nr_events=33874
<idle>-0 [000] d.h2 937.413238: hr_nr_events: (0) nr_events=930269
<idle>-0 [004] d.h2 937.413238: hr_nr_events: (0) nr_events=35263
<idle>-0 [001] d.h2 937.413238: hr_nr_events: (0) nr_events=33875
Which gives me the nr_events from the hrtimer pointer passed to the
timer.hrtimer_entry event via hrtimer->base->cpu_base->nr_events
The idea is that we can get trace events into places that the
maintainers have issues with (like the scheduler or vfs), where we may
be allow to add a trace event that only gives us access to a pointer
and nothing else that can become a limiting API.
Then we can attach an eprobe to it that can offset the pointer to a
structure and create dynamically all the fields we need.
Daniel has some work he's doing that will can be improved by this
feature.
Having it as a trigger, will make this rather complex.
Which is why we want this as a probe, and not a trigger. We are only
using the trigger to get the data from the field. What we are also
looking at is a way to create a "trace_probe" that can attach to a
tracepoint (before the event data is added). Which will not be using
the trigger code at all, but will be using the similar offset logic we
want to do here, but on the entry of the tracepoint, not the exit of it.
-- Steve
next prev parent reply other threads:[~2021-08-07 3:54 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-06 17:49 [RFC] [RFC] trace: Add kprobe on tracepoint Tzvetomir Stoyanov (VMware)
2021-08-06 21:53 ` kernel test robot
2021-08-06 22:31 ` Steven Rostedt
2021-08-07 1:28 ` Masami Hiramatsu
2021-08-07 3:54 ` Steven Rostedt [this message]
2021-08-08 3:15 ` Masami Hiramatsu
2021-08-07 5:04 ` kernel test robot
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=20210806235413.61c78c57@oasis.local.home \
--to=rostedt@goodmis.org \
--cc=bristot@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-devel@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=tom.zanussi@linux.intel.com \
--cc=tz.stoyanov@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.