From: Matyas Hurtik 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 Co-developed-by: Daniel Sedlak Signed-off-by: Daniel Sedlak --- 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 #include +#include + /* * 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