linux-trace-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/15] ring-buffer/tracing: Allow ring buffer to have bigger sub buffers
@ 2023-12-13 18:17 Steven Rostedt
  2023-12-13 18:17 ` [PATCH v3 01/15] ring-buffer: Refactor ring buffer implementation Steven Rostedt
                   ` (14 more replies)
  0 siblings, 15 replies; 16+ messages in thread
From: Steven Rostedt @ 2023-12-13 18:17 UTC (permalink / raw)
  To: linux-kernel, linux-trace-kernel
  Cc: Masami Hiramatsu, Mark Rutland, Mathieu Desnoyers, Andrew Morton,
	Tzvetomir Stoyanov, Vincent Donnefort, Kent Overstreet


[
  This is hopefully the last version before I push this to Linux next.
  It's now going though the final phases of my testing.
]

Note, this has been on my todo list since the ring buffer was created back
in 2008.

Tzvetomir last worked on this in 2021 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, and then changed the UI file
from buffer_subbuf_order to buffer_subbuf_size_kb.

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

[ last patch updates this to:

  echo 32 > /sys/kernel/tracing/buffer_subbuf_size_kb

]
  

Will make each sub buffer a size of 8 pages (32KB), 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).

Changes since v2: https://lore.kernel.org/all/20231213021914.361709558@goodmis.org/

- Fixed up the subbuf tests to ignore multiple spaces after before the
  'buf' string (same fix as was done for the trace_marker test).

- This time include Cc'ing linux-trace-kernel :-p

Changes since v1: https://lore.kernel.org/all/20231210040448.569462486@goodmis.org/

- Add the last patch that changes the ABI from a file called:

  buffer_subbuf_order  to   buffer_subbuf_size_kb

  That is, I kept the old interface the same, but then added the last
  patch that converts the interface into the one that makes more sense.
  I like keeping this in the git history, especially because of the
  way the implemantion is.

- I rebased on top of trace/core in the:

    git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git

- I made the tests a bit more advanced. Still a smoke test, but it
  now checks if the string written is the same as the string read.


Steven Rostedt (Google) (10):
      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 changing subbuf order
      tracing: Update subbuffer with kilobytes not page 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                     |  21 ++
 include/linux/ring_buffer.h                        |  17 +-
 kernel/trace/ring_buffer.c                         | 409 ++++++++++++++++-----
 kernel/trace/ring_buffer_benchmark.c               |  10 +-
 kernel/trace/trace.c                               | 155 +++++++-
 kernel/trace/trace.h                               |   1 +
 kernel/trace/trace_events.c                        |  59 ++-
 .../test.d/00basic/ringbuffer_subbuf_size.tc       |  95 +++++
 8 files changed, 647 insertions(+), 120 deletions(-)
 create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_subbuf_size.tc

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2023-12-13 18:20 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-13 18:17 [PATCH v3 00/15] ring-buffer/tracing: Allow ring buffer to have bigger sub buffers Steven Rostedt
2023-12-13 18:17 ` [PATCH v3 01/15] ring-buffer: Refactor ring buffer implementation Steven Rostedt
2023-12-13 18:17 ` [PATCH v3 02/15] ring-buffer: Page size per ring buffer Steven Rostedt
2023-12-13 18:17 ` [PATCH v3 03/15] ring-buffer: Add interface for configuring trace sub buffer size Steven Rostedt
2023-12-13 18:17 ` [PATCH v3 04/15] ring-buffer: Set new size of the ring buffer sub page Steven Rostedt
2023-12-13 18:17 ` [PATCH v3 05/15] ring-buffer: Read and write to ring buffers with custom sub buffer size Steven Rostedt
2023-12-13 18:17 ` [PATCH v3 06/15] ring-buffer: Clear pages on error in ring_buffer_subbuf_order_set() failure Steven Rostedt
2023-12-13 18:17 ` [PATCH v3 07/15] ring-buffer: Do no swap cpu buffers if order is different Steven Rostedt
2023-12-13 18:17 ` [PATCH v3 08/15] ring-buffer: Make sure the spare sub buffer used for reads has same size Steven Rostedt
2023-12-13 18:17 ` [PATCH v3 09/15] tracing: Update snapshot order along with main buffer order Steven Rostedt
2023-12-13 18:17 ` [PATCH v3 10/15] tracing: Stop the tracing while changing the ring buffer subbuf size Steven Rostedt
2023-12-13 18:17 ` [PATCH v3 11/15] ring-buffer: Keep the same size when updating the order Steven Rostedt
2023-12-13 18:17 ` [PATCH v3 12/15] ring-buffer: Just update the subbuffers when changing their allocation order Steven Rostedt
2023-12-13 18:17 ` [PATCH v3 13/15] ring-buffer: Add documentation on the buffer_subbuf_order file Steven Rostedt
2023-12-13 18:17 ` [PATCH v3 14/15] ringbuffer/selftest: Add basic selftest to test changing subbuf order Steven Rostedt
2023-12-13 18:17 ` [PATCH v3 15/15] tracing: Update subbuffer with kilobytes not page order Steven Rostedt

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).