This is the mail archive of the
systemtap@sources.redhat.com
mailing list for the systemtap project.
Re: reentrant probes
- From: Ananth N Mavinakayanahalli <amavin at redhat dot com>
- To: "Seth, Rohit" <rohit dot seth at intel dot com>
- Cc: "Frank Ch. Eigler" <fche at redhat dot com>, systemtap at sources dot redhat dot com
- Date: Mon, 02 May 2005 14:13:18 -0400
- Subject: Re: reentrant probes
- References: <01EF044AAEE12F4BAAD955CB750649430377112F@scsmsx401.amr.corp.intel.com>
Seth, Rohit wrote:
Frank Ch. Eigler <> wrote on Thursday, April 28, 2005 1:36 PM:
Hi Frank,
Hi -
Here are some kprobe reentrancy scenarios that may be problematic for
cunning users of systemtap.
Reentrancy:
one.stp: probe kernel.function("sys_read") {
relayfs_printsomething ("yo") } two.stp: probe
kernel.function("*@relayfs.c") { .... } # Two systemtap sessions
running concurrently. Executing the the first # handle causes the
other handler to be hit. Reentrancy!
# => We want to momentarily block the reentrant relayfs probe hit,
but # flag in two.stp's runtime that this has happened.
# We prefer not to disarm two.stp permanently.
I think it will be quite useful to allow renentrancy in probes. Not
sure why would you want to restrict this.
I think the question is more about how to determine when is it safe to
rearm the probe - can we figure this out deterministically?
Concurrency:
probe kernel.syscall("read") { ... }
# Two processors with user code concurrently calling read(2).
# => We want to execute the probe handlers concurrently, and
# not lock out the other kprobe hit event, to avoid
# timing interference.
Agree with this part that probe handlers should be SMP safe (...as they
are executing in kernel space/context).
Yes, concurrency imposes that the handlers written be smp-safe. However,
current kprobe users did not have to bother about making their handlers
smp safe 'cos the lower layer serializes kprobe handling. However, I'd
like to see a generic change in the kprobe layer rather than having
special casings for users who can/cannot handle concurrency .
Wondering if it would it be fair to impose a restriction and say:
existing kprobe users should make their handlers smp safe if they are
not already?
Ananth