Messages in this thread | | | From | Alexander Shishkin <> | Subject | Re: [PATCH v1 03/11] perf: Allow for multiple ring buffers per event | Date | Thu, 08 May 2014 12:08:58 +0300 |
| |
Alexander Shishkin <alexander.shishkin@linux.intel.com> writes:
> Peter Zijlstra <peterz@infradead.org> writes: > >> How about something like this for the itrace thing? > > It's much nicer than the page swizzling draft I was about to send you. > >> You would mmap() the regular buffer; when write ->aux_{offset,size} in >> the control page. After which you can do a second mmap() with the .pgoff >> matching the aux_offset you gave and .length matching the aux_size you >> gave. > > Why do we need aux_{offset,size} at all, then? Userspace should know how > they mmap()ed it. > >> This way the mmap() content still looks like a single linear file (could >> be sparse if you leave a hole, although we could require the aux_offset >> to match the end of the data section). >> >> And there is still the single event->rb, not more. > > Fair enough. > >> Then, when data inside that aux data store changes they should inject an >> PERF_RECORD_AUX to indicate this did happen, which ties it back into the >> normal event flow. >> >> With this there should be no difficult page table tricks or anything. > > True. > >> The patch is way incomplete but should sketch enough of the idea.. > > Can I take it over? > >> So the aux_head/tail values should also be in the file space and not >> start at 0 again, similar for the offsets in the AUX record. > > With PERF_RECORD_AUX carrying offset and size, we shouldn't need > aux_{head,tail} either, don't you think?
I take this one back, as perf record doesn't actually parse records from the buffer, it would still need the pointers.
Regards, -- Alex
| |