Message ID | 20231210035404.053677508@goodmis.org (mailing list archive) |
---|---|
Headers | show |
Series | ring-buffer/tracing: Allow ring buffer to have bigger sub buffers | expand |
On 2023-12-09 22:54, Steven Rostedt wrote: [...] > > Basically, events to the tracing subsystem are limited to just under a > PAGE_SIZE, as the ring buffer is split into "sub buffers" of one page > size, and an event can not be bigger than a sub buffer. This allows users > to change the size of a sub buffer by the order: > > echo 3 > /sys/kernel/tracing/buffer_subbuf_order > > Will make each sub buffer a size of 8 pages, allowing events to be almost > as big as 8 pages in size (sub buffers do have meta data on them as > well, keeping an event from reaching the same size as a sub buffer). Specifying the "order" of subbuffer size as a power of two of number of pages is a poor UX choice for a user-facing ABI. I would recommend allowing the user to specify the size in bytes, and internally bump to size to the next power of 2, with a minimum of PAGE_SIZE. Thanks, Mathieu
On Sun, 10 Dec 2023 09:17:44 -0500 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> wrote: > On 2023-12-09 22:54, Steven Rostedt wrote: > [...] > > > > Basically, events to the tracing subsystem are limited to just under a > > PAGE_SIZE, as the ring buffer is split into "sub buffers" of one page > > size, and an event can not be bigger than a sub buffer. This allows users > > to change the size of a sub buffer by the order: > > > > echo 3 > /sys/kernel/tracing/buffer_subbuf_order > > > > Will make each sub buffer a size of 8 pages, allowing events to be almost > > as big as 8 pages in size (sub buffers do have meta data on them as > > well, keeping an event from reaching the same size as a sub buffer). > > Specifying the "order" of subbuffer size as a power of two of > number of pages is a poor UX choice for a user-facing ABI. > > I would recommend allowing the user to specify the size in bytes, and > internally bump to size to the next power of 2, with a minimum of > PAGE_SIZE. Thanks. I actually agree with you and thought about doing just that, but decided to not make those changes and send out these patches with the given API first. I wanted to see if you would comment on this ;-) You did not disappoint! I was thinking of keeping the same kind of interface as we have with the buffer size "buffer_size_kb", and have it be "buffer_subbuf_size_kb", where you specify the minimum size in kilobytes and it creates it, and the subbuf may end up being bigger than specified (as that's more a implementation detail). Now that you called it out, I will add a patch to convert that as such. But will keep the current patches in for historical reasons. -- Steve