On Wed, Dec 02, 2015 at 01:38:19PM +0000, Wang Nan wrote:
This sloution requires user program (perf) do more things. At leastRight, this is tricky, this would not allow two snapshots to happen back
following things and limitations should be considered:
1. Before reading such ring buffer, perf must ensure all events which
may output to it is already stopped, so the 'head' pointer it get
is the end of the last record.
to back since that would then result in a bunch of missed events.
Aside from this issue its a rather nice idea.
2. We must ensure all events attached this ring buffer hasThat can be easily enforced.
'PERF_SAMPLE_SIZE' selected.
3. There must no tracking events output to this ring buffer.That is rather unfortunate, we'd best fix that up.
4. 2 bytes extra space is required for each record.8, perf records must be 8 byte aligned and sized.
Further improvement can be taken:That would mandate you always parse the stream backwards. Which seems
1. If PERF_SAMPLE_SIZE is selected, we can avoid outputting the event
size in header. Which eliminate extra space cose;
rather unfortunate. Also, no you cannot recoup the extra space, see the
alignment and size requirement.
2. We can find a way to append size information for tracking eventsThe !sample records you mean? Yes those had better have them too.
also.