Messages in this thread | | | Date | Thu, 25 Sep 2008 13:42:06 -0400 | From | Mathieu Desnoyers <> | Subject | Re: [RFC PATCH 1/3] Unified trace buffer |
| |
* Linus Torvalds (torvalds@linux-foundation.org) wrote: > > > On Thu, 25 Sep 2008, Mathieu Desnoyers wrote: > > > > We could use a page header instead to contain the "unused_size" > > information. > > Absolutely. There's no one way to do this. > > > I would prefer to put the extended timestamp within the event header > > instead of creating a separate entry for this for atomicity concerns > > (what happens if a long interrupt executes between the TSCExtend marker > > event and the event expecting to be written right next to it ?). > > The log entries should be reserved with interrupts disabled anyway, and > they are per-CPU, so there are no atomicity issues. >
I actually do use a lockless algorithm in LTTng and don't have to disable interrupts around tracing. This is how I get the kind of performance the Google folks expect. I would recommend to stay with interrupt disable + per-cpu spinlock (slow and heavy locking) for v1, but to keep in mind that we might want to go for a more lightweight locking scheme in v2.
> For NMI's, things get more exciting. I'd really prefer NMI's to go to a > separate ring buffer entirely, because otherwise consistency gets really > hard. Using lockless algorithms for a variable-sized pool of pages is a > disaster waiting to happen. >
LTTng does it, no disaster happened in the past 2-3 years. :)
I guess we could manage to deal with NMI tracing specfically using the in_nmi() helpers.
> I don't think we can currently necessarily reasonably trace NMI's, but > it's something to keep in mind as required support eventually. >
NMI tracing is a nice-to-have (and lttng does provide it), but the core thing is really performance; disabling interrupts happens to be fairly slow on many architectures.
Mathieu
> Linus >
-- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
| |