mm: list_lru: disable memcg_aware when cgroup.memory is set to "nokmem"
authorHaifeng Xu <haifeng.xu@shopee.com>
Thu, 28 Dec 2023 06:27:14 +0000 (06:27 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 22 Feb 2024 00:00:02 +0000 (16:00 -0800)
Actually, when using a boot time kernel option "cgroup.memory=nokmem", all
lru items are inserted to list_lru_node.  But for those users who invoke
list_lru_init_memcg() to initialize list_lru, list_lru_memcg_aware()
returns true.  And this brings unneeded operations related to memcg.

To make things more convenient, let's disable memcg_aware when
cgroup.memory is set to "nokmem".

Link: https://lkml.kernel.org/r/20231228062715.338672-1-haifeng.xu@shopee.com
Signed-off-by: Haifeng Xu <haifeng.xu@shopee.com>
Acked-by: Roman Gushchin <roman.gushchin@linux.dev>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Shakeel Butt <shakeelb@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/list_lru.c

index 35b0147..158781d 100644 (file)
@@ -567,6 +567,9 @@ int __list_lru_init(struct list_lru *lru, bool memcg_aware,
                lru->shrinker_id = shrinker->id;
        else
                lru->shrinker_id = -1;
+
+       if (mem_cgroup_kmem_disabled())
+               memcg_aware = false;
 #endif
 
        lru->node = kcalloc(nr_node_ids, sizeof(*lru->node), GFP_KERNEL);