diff mbox series

[v2,3/3] mm/page_alloc: Add trace event for totalreserve_pages calculation

Message ID 20250308034606.2036033-4-liumartin@google.com (mailing list archive)
State New
Headers show
Series Add tracepoints for lowmem reserves, watermarks and totalreserve_pages | expand

Commit Message

Martin Liu March 8, 2025, 3:46 a.m. UTC
This commit introduces a new trace event,
`mm_calculate_totalreserve_pages`, which reports the new reserve value
at the exact time when it takes effect.

The `totalreserve_pages` value represents the total amount of memory
reserved across all zones and nodes in the system. This reserved memory
is crucial for ensuring that critical kernel operations have access to
sufficient memory, even under memory pressure.

By tracing the `totalreserve_pages` value, developers can gain insights
that how the total reserved memory changes over time.

Signed-off-by: Martin Liu <liumartin@google.com>
---
 include/trace/events/kmem.h | 18 ++++++++++++++++++
 mm/page_alloc.c             |  1 +
 2 files changed, 19 insertions(+)

Comments

David Rientjes March 10, 2025, 12:54 a.m. UTC | #1
On Sat, 8 Mar 2025, Martin Liu wrote:

> This commit introduces a new trace event,
> `mm_calculate_totalreserve_pages`, which reports the new reserve value
> at the exact time when it takes effect.
> 
> The `totalreserve_pages` value represents the total amount of memory
> reserved across all zones and nodes in the system. This reserved memory
> is crucial for ensuring that critical kernel operations have access to
> sufficient memory, even under memory pressure.
> 
> By tracing the `totalreserve_pages` value, developers can gain insights
> that how the total reserved memory changes over time.
> 
> Signed-off-by: Martin Liu <liumartin@google.com>

Acked-by: David Rientjes <rientjes@google.com>
diff mbox series

Patch

diff --git a/include/trace/events/kmem.h b/include/trace/events/kmem.h
index 9623e68d4d26..f74925a6cf69 100644
--- a/include/trace/events/kmem.h
+++ b/include/trace/events/kmem.h
@@ -402,6 +402,24 @@  TRACE_EVENT(mm_setup_per_zone_lowmem_reserve,
 		  __entry->lowmem_reserve)
 );
 
+TRACE_EVENT(mm_calculate_totalreserve_pages,
+
+	TP_PROTO(unsigned long totalreserve_pages),
+
+	TP_ARGS(totalreserve_pages),
+
+	TP_STRUCT__entry(
+		__field(unsigned long, totalreserve_pages)
+	),
+
+	TP_fast_assign(
+		__entry->totalreserve_pages = totalreserve_pages;
+	),
+
+	TP_printk("totalreserve_pages=%lu", __entry->totalreserve_pages)
+);
+
+
 /*
  * Required for uniquely and securely identifying mm in rss_stat tracepoint.
  */
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index e472b1275166..69ceab250979 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -5827,6 +5827,7 @@  static void calculate_totalreserve_pages(void)
 		}
 	}
 	totalreserve_pages = reserve_pages;
+	trace_mm_calculate_totalreserve_pages(totalreserve_pages);
 }
 
 /*