Messages in this thread | | | Subject | Re: ftrace global trace_pipe_raw | From | Claudio <> | Date | Tue, 24 Jul 2018 17:30:05 +0200 |
| |
Hello Steve,
thank you for your answer,
On 07/24/2018 04:25 PM, Steven Rostedt wrote: > On Tue, 24 Jul 2018 10:23:16 -0400 > Steven Rostedt <rostedt@goodmis.org> wrote: > >>> >>> Would work in the direction of adding a global trace_pipe_raw be considered >>> for inclusion? >> >> The design of the lockless ring buffer requires not to be preempted, >> and that the data cannot be written to from more than one location. To >> do so, we make a per CPU buffer, and disable preemption when writing. >> This means that we have only one writer at a time. It can handle >> interrupts and NMIs, because they will finish before they return and >> this doesn't break the algorithm. But having writers from multiple CPUs >> would require locking or other heaving synchronization operations that >> will greatly reduce the speed of writing to the buffers (not to mention >> the cache thrashing). >
I understand, it is not a simple matter then.
> And why would you need a single buffer?
I am interested in all events that have to do with a specific task, regardless of the CPU they appear on. Having an already post-processed stream of binary data would be awesome I think.
> Note, we are working on making > libtracecmd.so that will allow applications to read the buffers and the > library will take care of the interleaving of the raw data. This should > hopefully be ready in about three months or so. > > -- Steve
That would be great! So the library could handle this kind of preprocessing, and create a single stream of sorted timestamps/events with the binary data?
Thanks a lot,
Claudio
| |