Messages in this thread | | | Date | Thu, 26 Nov 2015 10:19:10 +0100 | From | Ingo Molnar <> | Subject | Re: [PATCH] perf record: Add snapshot mode support for perf's regular events |
| |
* Wangnan (F) <wangnan0@huawei.com> wrote:
> > > On 2015/11/25 20:20, Peter Zijlstra wrote: > >On Wed, Nov 25, 2015 at 05:44:00PM +0800, Wangnan (F) wrote: > >> > >>On 2015/11/25 17:27, Peter Zijlstra wrote: > >>>On Tue, Nov 24, 2015 at 10:00:31PM +0800, Yunlong Song wrote: > >>>>In our patch, we create and maintain a user space ring buffer to store > >>>>perf's tracing info, instead of directly writing to perf.data file as > >>>>before. In snapshot mode, only a SIGUSR2 signal can trigger perf to dump > >>>>the tracing info currently stored in the user space ring buffer to > >>>>perf.data file. > >>>I would very much like to first fix the perf overwrite mode: see > >>>lkml.kernel.org/r/20151023151205.GW11639@twins.programming.kicks-ass.net > >>I think they can be done in parallel. We can first do something with > >>tracking events and perf's output file, and wait for kernel level > >>overwrite mode fixed, then decide whether to implement perf's own > >>ringbuffer. > >That seems backwards; why would you ever want to endlessly copy the > >events if you're not going to use them? > > I agree that we need to fixing overwrite mode. However, user space ringbuffer > can be more flexible. for example, dynamically shrinking and expansion. It would > be hard in kernel I think, and I'm not sure how much flexibility we need. Doing > things in kernel always more difficult than in userspace. > > But yes, we can do that userspace ring buffer when we really need it. At very > first we can start working on perf side and assume overwrite mode is ready.
I don't think Peter asked for much: pick up the patch he has already written and use it, to have an even lower overhead always-enabled background tracing mode of perf.
Resizing shouldn't be much of an issue with existing features: if events start overflowing or some other threshold for dynamic increase of the ring-buffer is met then the daemon should open a new set of events with a larger ring-buffer, and close the old events once the new tracing ring-buffer is up and running.
Use event multiplexing to output all interesting events into the same single (per CPU) ring-buffer.
Thanks,
Ingo
| |