From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Andrew Morton <akpm@linux-foundation.org>,
Tzvetomir Stoyanov <tz.stoyanov@gmail.com>,
Vincent Donnefort <vdonnefort@google.com>,
Kent Overstreet <kent.overstreet@gmail.com>
Subject: [PATCH 00/14] ring-buffer/tracing: Allow ring buffer to have bigger sub buffers
Date: Sat, 09 Dec 2023 22:54:04 -0500 [thread overview]
Message-ID: <20231210035404.053677508@goodmis.org> (raw)
Note, this has been on my todo list since the ring buffer was created back
in 2008.
Tzvetomir last worked on this in 2020 and I need to finally get it in.
His last series was:
https://lore.kernel.org/linux-trace-devel/20211213094825.61876-1-tz.stoyanov@gmail.com/
With the description of:
Currently the size of one sub buffer page is global for all buffers and
it is hard coded to one system page. The patch set introduces configurable
ring buffer sub page size, per ring buffer. A new user space interface is
introduced, which allows to change the sub page size of the ftrace buffer,
per ftrace instance.
I'm pulling in his patches mostly untouched, except that I had to tweak
a few things to forward port them.
The issues I found I added as the last 7 patches to the series, and then
I added documentation and a selftest.
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).
Steven Rostedt (Google) (9):
ring-buffer: Clear pages on error in ring_buffer_subbuf_order_set() failure
ring-buffer: Do no swap cpu buffers if order is different
ring-buffer: Make sure the spare sub buffer used for reads has same size
tracing: Update snapshot order along with main buffer order
tracing: Stop the tracing while changing the ring buffer subbuf size
ring-buffer: Keep the same size when updating the order
ring-buffer: Just update the subbuffers when changing their allocation order
ring-buffer: Add documentation on the buffer_subbuf_order file
ringbuffer/selftest: Add basic selftest to test chaning subbuf order
Tzvetomir Stoyanov (VMware) (5):
ring-buffer: Refactor ring buffer implementation
ring-buffer: Page size per ring buffer
ring-buffer: Add interface for configuring trace sub buffer size
ring-buffer: Set new size of the ring buffer sub page
ring-buffer: Read and write to ring buffers with custom sub buffer size
----
Documentation/trace/ftrace.rst | 27 ++
include/linux/ring_buffer.h | 17 +-
kernel/trace/ring_buffer.c | 406 ++++++++++++++++-----
kernel/trace/ring_buffer_benchmark.c | 10 +-
kernel/trace/trace.c | 143 +++++++-
kernel/trace/trace.h | 1 +
kernel/trace/trace_events.c | 59 ++-
.../ftrace/test.d/00basic/ringbuffer_order.tc | 46 +++
8 files changed, 588 insertions(+), 121 deletions(-)
create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_order.tc
next reply other threads:[~2023-12-10 4:04 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-10 3:54 Steven Rostedt [this message]
2023-12-10 3:54 ` [PATCH 01/14] ring-buffer: Refactor ring buffer implementation Steven Rostedt
2023-12-10 3:54 ` [PATCH 02/14] ring-buffer: Page size per ring buffer Steven Rostedt
2023-12-10 3:54 ` [PATCH 03/14] ring-buffer: Add interface for configuring trace sub buffer size Steven Rostedt
2023-12-10 3:54 ` [PATCH 04/14] ring-buffer: Set new size of the ring buffer sub page Steven Rostedt
2023-12-10 3:54 ` [PATCH 05/14] ring-buffer: Read and write to ring buffers with custom sub buffer size Steven Rostedt
2023-12-10 3:54 ` [PATCH 06/14] ring-buffer: Clear pages on error in ring_buffer_subbuf_order_set() failure Steven Rostedt
2023-12-10 3:54 ` [PATCH 07/14] ring-buffer: Do no swap cpu buffers if order is different Steven Rostedt
2023-12-10 3:54 ` [PATCH 08/14] ring-buffer: Make sure the spare sub buffer used for reads has same size Steven Rostedt
2023-12-10 3:54 ` [PATCH 09/14] tracing: Update snapshot order along with main buffer order Steven Rostedt
2023-12-10 3:54 ` [PATCH 10/14] tracing: Stop the tracing while changing the ring buffer subbuf size Steven Rostedt
2023-12-10 3:54 ` [PATCH 11/14] ring-buffer: Keep the same size when updating the order Steven Rostedt
2023-12-10 3:54 ` [PATCH 12/14] ring-buffer: Just update the subbuffers when changing their allocation order Steven Rostedt
2023-12-10 3:54 ` [PATCH 13/14] ring-buffer: Add documentation on the buffer_subbuf_order file Steven Rostedt
2023-12-10 14:28 ` Mathieu Desnoyers
2023-12-10 3:54 ` [PATCH 14/14] ringbuffer/selftest: Add basic selftest to test chaning subbuf order Steven Rostedt
2023-12-10 14:26 ` Mathieu Desnoyers
2023-12-10 15:44 ` Steven Rostedt
2023-12-10 14:17 ` [PATCH 00/14] ring-buffer/tracing: Allow ring buffer to have bigger sub buffers Mathieu Desnoyers
2023-12-10 15:38 ` Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231210035404.053677508@goodmis.org \
--to=rostedt@goodmis.org \
--cc=akpm@linux-foundation.org \
--cc=kent.overstreet@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=tz.stoyanov@gmail.com \
--cc=vdonnefort@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).