]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ring-buffer: Add page statistics to the meta-page
authorVincent Donnefort <vdonnefort@google.com>
Mon, 9 Mar 2026 16:24:47 +0000 (16:24 +0000)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Mon, 9 Mar 2026 16:33:53 +0000 (12:33 -0400)
Add two fields pages_touched and pages_lost to the ring-buffer
meta-page. Those fields are useful to get the number of used pages in
the ring-buffer.

Link: https://patch.msgid.link/20260309162516.2623589-2-vdonnefort@google.com
Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Vincent Donnefort <vdonnefort@google.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
include/uapi/linux/trace_mmap.h
kernel/trace/ring_buffer.c

index c102ef35d11e408c2193529e21f5d749e62f81ab..e8185889a1c822a3507de5929d90b83469223b50 100644 (file)
@@ -17,8 +17,8 @@
  * @entries:           Number of entries in the ring-buffer.
  * @overrun:           Number of entries lost in the ring-buffer.
  * @read:              Number of entries that have been read.
- * @Reserved1:         Internal use only.
- * @Reserved2:         Internal use only.
+ * @pages_lost:                Number of pages overwritten by the writer.
+ * @pages_touched:     Number of pages written by the writer.
  */
 struct trace_buffer_meta {
        __u32           meta_page_size;
@@ -39,8 +39,8 @@ struct trace_buffer_meta {
        __u64   overrun;
        __u64   read;
 
-       __u64   Reserved1;
-       __u64   Reserved2;
+       __u64   pages_lost;
+       __u64   pages_touched;
 };
 
 #define TRACE_MMAP_IOCTL_GET_READER            _IO('R', 0x20)
index 17d0ea0cc3e6f649e5a2a55b453b7f5801d0a7ac..82b4df5796703cffbe859db89eb4921a125c8faf 100644 (file)
@@ -6154,6 +6154,8 @@ static void rb_update_meta_page(struct ring_buffer_per_cpu *cpu_buffer)
        meta->entries = local_read(&cpu_buffer->entries);
        meta->overrun = local_read(&cpu_buffer->overrun);
        meta->read = cpu_buffer->read;
+       meta->pages_lost = local_read(&cpu_buffer->pages_lost);
+       meta->pages_touched = local_read(&cpu_buffer->pages_touched);
 
        /* Some archs do not have data cache coherency between kernel and user-space */
        flush_kernel_vmap_range(cpu_buffer->meta_page, PAGE_SIZE);