linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RESEND net-next 1/2] net-memcg: Scopify the indicators of sockmem pressure
@ 2023-07-11 12:41 Abel Wu
  2023-07-11 12:41 ` [PATCH RESEND net-next 2/2] net-memcg: Remove redundant tcpmem_pressure Abel Wu
                   ` (3 more replies)
  0 siblings, 4 replies; 13+ messages in thread
From: Abel Wu @ 2023-07-11 12:41 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, Kefeng Wang, Yafang Shao,
	Kuniyuki Iwashima, Martin KaFai Lau, Alexander Mikhalitsyn,
	Breno Leitao, David Howells, Jason Xing, Xin Long
  Cc: Abel Wu, Michal Hocko, Alexei Starovoitov, 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 5818af8eca5a..5860c7f316b9 100644
--- a/include/linux/memcontrol.h
+++ b/include/linux/memcontrol.h
@@ -1727,8 +1727,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] 13+ messages in thread

end of thread, other threads:[~2023-07-28 12:45 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-11 12:41 [PATCH RESEND net-next 1/2] net-memcg: Scopify the indicators of sockmem pressure Abel Wu
2023-07-11 12:41 ` [PATCH RESEND net-next 2/2] net-memcg: Remove redundant tcpmem_pressure Abel Wu
2023-07-12  3:45 ` [PATCH RESEND net-next 1/2] net-memcg: Scopify the indicators of sockmem pressure Jakub Kicinski
2023-07-12  6:45   ` Abel Wu
2023-07-20  7:58 ` Abel Wu
2023-07-20  8:57   ` Eric Dumazet
2023-07-20 11:34     ` Abel Wu
2023-07-22  0:20 ` Roman Gushchin
2023-07-24  3:47   ` Abel Wu
2023-07-26  2:56     ` Roman Gushchin
2023-07-26  8:44       ` Abel Wu
2023-07-27  0:19         ` Roman Gushchin
2023-07-28 12:45           ` Abel Wu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).