All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC] tracing: aggregate ring-buffer usage statistics
@ 2026-08-11 11:48 Xiang Gao
  2026-08-11 14:08 ` Steven Rostedt
  0 siblings, 1 reply; 4+ messages in thread
From: Xiang Gao @ 2026-08-11 11:48 UTC (permalink / raw)
  To: Steven Rostedt
  Cc: Masami Hiramatsu, Mathieu Desnoyers, Lorenzo Stoakes, gao xu,
	yinchuang1, linux-trace-kernel, linux-kernel, linux-mm, Xiang Gao

Hi,

I would like to clarify the motivation for a tracing-specific memory
usage interface.

The original requirement comes from Android lost-RAM attribution.
Ftrace ring-buffer data pages are not represented as a separate memory
category, so userspace memory diagnostics may treat them as lost RAM.

The memory can be spread across the global trace array, dynamically
created tracing instances, and snapshot buffers. Userspace can read
buffer_total_size_kb for the global trace array and each instance, but
it has to discover and sum all instances, and snapshot buffer capacity
is not exposed through the same per-instance total.

On one Android device, the global buffer and 24 tracing instances
accounted for 395,664 kB of ring-buffer data capacity. This makes the
missing attribution significant for low-memory diagnostics.

The core requirement is a stable tracing-specific interface that allows
userspace to obtain the aggregate tracing buffer usage without walking
all instances. It does not need to be part of /proc/meminfo or
show_mem().

One possible interface would be under:

  /sys/kernel/tracing/trace_stats/

It could provide an aggregate buffer value together with a breakdown
for main and snapshot buffers. Per-CPU statistics could also be added
if useful.

Thanks,
Xiang

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

* Re: [RFC] tracing: aggregate ring-buffer usage statistics
  2026-08-11 11:48 [RFC] tracing: aggregate ring-buffer usage statistics Xiang Gao
@ 2026-08-11 14:08 ` Steven Rostedt
  2026-08-12 13:21   ` 答复: [External Mail]Re: " 高翔
  0 siblings, 1 reply; 4+ messages in thread
From: Steven Rostedt @ 2026-08-11 14:08 UTC (permalink / raw)
  To: Xiang Gao
  Cc: Masami Hiramatsu, Mathieu Desnoyers, Lorenzo Stoakes, gao xu,
	yinchuang1, linux-trace-kernel, linux-kernel, linux-mm, Xiang Gao

On Tue, 11 Aug 2026 19:48:18 +0800
Xiang Gao <gxxa03070307@gmail.com> wrote:

> One possible interface would be under:
> 
>   /sys/kernel/tracing/trace_stats/
> 
> It could provide an aggregate buffer value together with a breakdown
> for main and snapshot buffers. Per-CPU statistics could also be added
> if useful.

As I previous said. I'm OK with adding a file there.

-- Steve

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

* 答复: [External Mail]Re: [RFC] tracing: aggregate ring-buffer usage statistics
  2026-08-11 14:08 ` Steven Rostedt
@ 2026-08-12 13:21   ` 高翔
  2026-08-12 15:47     ` Steven Rostedt
  0 siblings, 1 reply; 4+ messages in thread
From: 高翔 @ 2026-08-12 13:21 UTC (permalink / raw)
  To: Steven Rostedt, Xiang Gao
  Cc: Masami Hiramatsu, Mathieu Desnoyers, Lorenzo Stoakes, gao xu,
	印闯, linux-trace-kernel@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org

[-- Attachment #1: Type: text/plain, Size: 1883 bytes --]


Thanks, Steve.

For the initial implementation, I plan to add:

  /sys/kernel/tracing/trace_stats/total_memory_kb

The file would use an extensible key/value format. Initially it would
report the ring-buffer data capacity:

  total:                   395664
  ring_buffer:             395664
  ring_buffer_live:        395544
  ring_buffer_snapshot:       120

Here, ring_buffer is the sum of ring_buffer_live and
ring_buffer_snapshot. The values cover the global trace array and all
tracing instances across all tracing CPUs.

Additional accounted categories, such as event memory, could be appended
later and included in total. Per-CPU statistics could be exposed
separately under trace_stats/per_cpu/cpuN/ to avoid mixing aggregate and
per-CPU values in one file.

Userspace would parse fields by name and ignore unknown fields, so new
categories can be added without changing the existing format.

Does this initial format look reasonable?

Thanks,
Xiang



________________________________
发件人: Steven Rostedt <rostedt@goodmis.org>
发送时间: 2026年8月11日 22:08:30
收件人: Xiang Gao
抄送: Masami Hiramatsu; Mathieu Desnoyers; Lorenzo Stoakes; gao xu; 印闯; linux-trace-kernel@vger.kernel.org; linux-kernel@vger.kernel.org; linux-mm@kvack.org; 高翔
主题: [External Mail]Re: [RFC] tracing: aggregate ring-buffer usage statistics

[外部邮件] 此邮件来源于小米公司外部,请谨慎处理。若对邮件安全性存疑,请将邮件转发给misec@xiaomi.com进行反馈

On Tue, 11 Aug 2026 19:48:18 +0800
Xiang Gao <gxxa03070307@gmail.com> wrote:

> One possible interface would be under:
>
>   /sys/kernel/tracing/trace_stats/
>
> It could provide an aggregate buffer value together with a breakdown
> for main and snapshot buffers. Per-CPU statistics could also be added
> if useful.

As I previous said. I'm OK with adding a file there.

-- Steve

[-- Attachment #2: Type: text/html, Size: 3508 bytes --]

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

* Re: [External Mail]Re: [RFC] tracing: aggregate ring-buffer usage statistics
  2026-08-12 13:21   ` 答复: [External Mail]Re: " 高翔
@ 2026-08-12 15:47     ` Steven Rostedt
  0 siblings, 0 replies; 4+ messages in thread
From: Steven Rostedt @ 2026-08-12 15:47 UTC (permalink / raw)
  To: 高翔
  Cc: Xiang Gao, Masami Hiramatsu, Mathieu Desnoyers, Lorenzo Stoakes,
	gao xu, 印闯, linux-trace-kernel@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org

On Wed, 12 Aug 2026 13:21:29 +0000
高翔 <gaoxiang17@xiaomi.com> wrote:

> Thanks, Steve.
> 
> For the initial implementation, I plan to add:
> 
>   /sys/kernel/tracing/trace_stats/total_memory_kb
> 
> The file would use an extensible key/value format. Initially it would
> report the ring-buffer data capacity:
> 
>   total:                   395664
>   ring_buffer:             395664
>   ring_buffer_live:        395544
>   ring_buffer_snapshot:       120

You can rename the above to:

   total:
   buffers_mem:
   snapshot_buffers_mem:

No need to use "ring" and it keeps consistent with "buffer_size_kb".

I added the "mem" part to distinguish the difference between these numbers
and the buffer_size_kb, as these numbers are about total memory whereas
the "buffer_size_kb" is about usable memory.

There's already a total for all memory listed. We don't need to have a
total for the "live" and "snapshot".

> 
> Here, ring_buffer is the sum of ring_buffer_live and
> ring_buffer_snapshot. The values cover the global trace array and all
> tracing instances across all tracing CPUs.
> 
> Additional accounted categories, such as event memory, could be appended
> later and included in total. Per-CPU statistics could be exposed
> separately under trace_stats/per_cpu/cpuN/ to avoid mixing aggregate and
> per-CPU values in one file.

Agreed, this file should exist in the cpuN/ directories and be only for
those instances.

> 
> Userspace would parse fields by name and ignore unknown fields, so new
> categories can be added without changing the existing format.

Right. I would expect additional items to be added here.

> 
> Does this initial format look reasonable?
> 

Yes, thanks for doing this.

-- Steve


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

end of thread, other threads:[~2026-08-12 15:46 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-11 11:48 [RFC] tracing: aggregate ring-buffer usage statistics Xiang Gao
2026-08-11 14:08 ` Steven Rostedt
2026-08-12 13:21   ` 答复: [External Mail]Re: " 高翔
2026-08-12 15:47     ` Steven Rostedt

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.