Thread (13 messages) flat view 13 messages, 3 authors, 2025-07-17
STALE419d

[PATCH v2 net-next 2/2] mm/vmpressure: add tracepoint for socket pressure detection

From: Daniel Sedlak <hidden>
Date: 2025-07-14 14:37:19
Also in: linux-mm
Subsystem: memory management, memory management - core, the rest, tracing · Maintainers: Andrew Morton, David Hildenbrand, Linus Torvalds, Steven Rostedt, Masami Hiramatsu

From: Matyas Hurtik <redacted>

When the vmpressure function marks all sockets within a particular
cgroup as under pressure, it can silently reduce network throughput
significantly. This socket pressure is not currently signaled in any way
to the users, and it is difficult to detect which cgroup is under socket
pressure.

This patch adds a new tracepoint that is called when a cgroup is under
socket pressure.

Signed-off-by: Matyas Hurtik <redacted>
Co-developed-by: Daniel Sedlak <redacted>
Signed-off-by: Daniel Sedlak <redacted>
---
 include/trace/events/memcg.h | 25 +++++++++++++++++++++++++
 mm/vmpressure.c              |  3 +++
 2 files changed, 28 insertions(+)
diff --git a/include/trace/events/memcg.h b/include/trace/events/memcg.h
index dfe2f51019b4..19a51db73913 100644
--- a/include/trace/events/memcg.h
+++ b/include/trace/events/memcg.h
@@ -100,6 +100,31 @@ TRACE_EVENT(memcg_flush_stats,
 		__entry->force, __entry->needs_flush)
 );
 
+TRACE_EVENT(memcg_socket_under_pressure,
+
+	TP_PROTO(const struct mem_cgroup *memcg, unsigned long scanned,
+		unsigned long reclaimed),
+
+	TP_ARGS(memcg, scanned, reclaimed),
+
+	TP_STRUCT__entry(
+		__field(u64, id)
+		__field(unsigned long, scanned)
+		__field(unsigned long, reclaimed)
+	),
+
+	TP_fast_assign(
+		__entry->id = cgroup_id(memcg->css.cgroup);
+		__entry->scanned = scanned;
+		__entry->reclaimed = reclaimed;
+	),
+
+	TP_printk("memcg_id=%llu scanned=%lu reclaimed=%lu",
+		__entry->id,
+		__entry->scanned,
+		__entry->reclaimed)
+);
+
 #endif /* _TRACE_MEMCG_H */
 
 /* This part must be outside protection */
diff --git a/mm/vmpressure.c b/mm/vmpressure.c
index bd5183dfd879..aa9583066731 100644
--- a/mm/vmpressure.c
+++ b/mm/vmpressure.c
@@ -21,6 +21,8 @@
 #include <linux/printk.h>
 #include <linux/vmpressure.h>
 
+#include <trace/events/memcg.h>
+
 /*
  * The window size (vmpressure_win) is the number of scanned pages before
  * we try to analyze scanned/reclaimed ratio. So the window is used as a
@@ -317,6 +319,7 @@ void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree,
 			 * pressure events can occur.
 			 */
 			WRITE_ONCE(memcg->socket_pressure, jiffies + HZ);
+			trace_memcg_socket_under_pressure(memcg, scanned, reclaimed);
 		}
 	}
 }
-- 
2.39.5
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help