This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [TAPSETS] Linux Kernel Event Trace Tool


If the person is interested into tracing the whole system (process events,
softirqs, interrupts and NMI) to see the root of a problem, then a "event lost"
will happen as soon as an NMI tries to reenter into the logging code. That will
leave an incomplete trace.


Mathieu Desnoyers <compudj@krystal.dyndns.org>

FChE
Not exactly.  Those functions could still in theory be instrumented,
but an actual run-time reentry into the probing system would be
detected, the probe short-circuited, and a "missed probe" would be
recorded.

So how about using semaphore in probe handler or spin lock in _stp_sprintf. So that no event will be lost. The current implementation will just abandon the processing of a probe handler if there's already another probe handler running, even on a different CPU.


Mathieu Desnoyers
This will happend on systems where preemption is enabled if you do not disable
preemption. You could save the cpu_id() once for the current logging, and then
keep the same until the end. The side-effect is that, sometimes, a CPU will
write in another cpu's buffer.

But I have no way to pass cpuid into _stp_printf. So for my tapsets, is there a good way to solve multiple calls to _stp_printf besides print all stuffs using a single call of _stp_printf?






Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]