All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 1/2] net-memcg: Scopify the indicators of sockmem pressure
@ 2023-06-25 14:28 ` Abel Wu
  0 siblings, 0 replies; 6+ messages in thread
From: Abel Wu @ 2023-06-25 14:28 UTC (permalink / raw)
  To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Johannes Weiner, Michal Hocko, Roman Gushchin, Shakeel Butt,
	Muchun Song, Andrew Morton, David Ahern, Yosry Ahmed,
	Matthew Wilcox (Oracle), Yu Zhao, Abel Wu, Kuniyuki Iwashima,
	Alexei Starovoitov, Martin KaFai Lau, Alexander Mikhalitsyn,
	Breno Leitao <lei>
  Cc: Michal Hocko, open list, open list:NETWORKING [GENERAL],
	open list:CONTROL GROUP - MEMORY RESOURCE CONTROLLER MEMCG,
	open list:CONTROL GROUP - MEMORY RESOURCE CONTROLLER MEMCG

Now there are two indicators of socket memory pressure sit inside
struct mem_cgroup, socket_pressure and tcpmem_pressure.

When in legacy mode aka. cgroupv1, the socket memory is charged
into a separate counter memcg->tcpmem rather than ->memory, so
the reclaim pressure of the memcg has nothing to do with socket's
pressure at all. While for default mode, the ->tcpmem is simply
not used.

So {socket,tcpmem}_pressure are only used in default/legacy mode
respectively. This patch fixes the pieces of code that make mixed
use of both.

Signed-off-by: Abel Wu <wuyun.abel@bytedance.com>
---
 include/linux/memcontrol.h | 4 ++--
 mm/vmpressure.c            | 8 ++++++++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
index 222d7370134c..9b1b536b4ec9 100644
--- a/include/linux/memcontrol.h
+++ b/include/linux/memcontrol.h
@@ -1743,8 +1743,8 @@ void mem_cgroup_sk_alloc(struct sock *sk);
 void mem_cgroup_sk_free(struct sock *sk);
 static inline bool mem_cgroup_under_socket_pressure(struct mem_cgroup *memcg)
 {
-	if (!cgroup_subsys_on_dfl(memory_cgrp_subsys) && memcg->tcpmem_pressure)
-		return true;
+	if (!cgroup_subsys_on_dfl(memory_cgrp_subsys))
+		return !!memcg->tcpmem_pressure;
 	do {
 		if (time_before(jiffies, READ_ONCE(memcg->socket_pressure)))
 			return true;
diff --git a/mm/vmpressure.c b/mm/vmpressure.c
index b52644771cc4..22c6689d9302 100644
--- a/mm/vmpressure.c
+++ b/mm/vmpressure.c
@@ -244,6 +244,14 @@ void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree,
 	if (mem_cgroup_disabled())
 		return;
 
+	/*
+	 * The in-kernel users only care about the reclaim efficiency
+	 * for this @memcg rather than the whole subtree, and there
+	 * isn't and won't be any in-kernel user in a legacy cgroup.
+	 */
+	if (!cgroup_subsys_on_dfl(memory_cgrp_subsys) && !tree)
+		return;
+
 	vmpr = memcg_to_vmpressure(memcg);
 
 	/*
-- 
2.37.3


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

end of thread, other threads:[~2023-06-26 19:58 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-25 14:28 [PATCH net-next 1/2] net-memcg: Scopify the indicators of sockmem pressure Abel Wu
2023-06-25 14:28 ` Abel Wu
2023-06-25 14:28 ` [PATCH net-next 2/2] net-memcg: Remove redundant tcpmem_pressure Abel Wu
2023-06-25 14:28   ` Abel Wu
     [not found] ` <20230625142820.47185-1-wuyun.abel-EC8Uxl6Npydl57MIdRCFDg@public.gmane.org>
2023-06-26 19:58   ` [PATCH net-next 1/2] net-memcg: Scopify the indicators of sockmem pressure Jakub Kicinski
2023-06-26 19:58     ` Jakub Kicinski

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.