Messages in this thread | | | Subject | Re: [RFC PATCH 1/3] Unified trace buffer | From | Peter Zijlstra <> | Date | Thu, 25 Sep 2008 16:53:28 +0200 |
| |
On Thu, 2008-09-25 at 07:33 -0700, Martin Bligh wrote: > > I rather like this idea, as it gives small entries (the common case) the > > least overhead but does allow for larger ones. > > > > By also putting the time in there you can do the merge sort iterator, > > Linus was right that everybody wants this anyway. > > > > As for delta encoding the time, we could make the tick log the absolute > > time packet, that's at least 100Hz and it already has to compute the > > full gtod thing anyway. > > > > I don't much like Linus' idea of bringing type information back into the > > primitive header (sorry Linus ;-)). I'd much rather keep that > > abstraction in the next layer. > > There is part of the type stuff that belongs in the lower layer, it seems - > the padding events for the up-to-end-of-page buffering, and the timestamp > extensions. It seems wrong to split those across two layers.
Hmm, you've got a point there, then it would be 3 package types:
- regular - full time - nop
Which can be encoded using 2 bits
> But perhaps we can keep a couple of bits for this, and three of the bits > to represent the length of the data payload (maybe in 4 byte multiples > rather than bytes?) That'd let up to 28 bytes as a payload in a short event.
Right - if you use raw tsc you're dependent on clock speed, if we'd normalize that on ns instead you'd need at least:
l(10000000)/l(2) 23.25349666421153643532
bits to handle HZ=100, leaving us with 32-2-24 = 6 bits for size.
Sounds doable (unless I mis-counted on the 0's).
Also, I agree on the 4byte alignment, rather than the 8byte Steve seems to favour.
| |