All of lore.kernel.org
 help / color / mirror / Atom feed
* + mm-thp-restore-shrinker_nonslab-on-the-deferred-split-shrinker.patch added to mm-new branch
@ 2026-09-06  2:35 Andrew Morton
  0 siblings, 0 replies; only message in thread
From: Andrew Morton @ 2026-09-06  2:35 UTC (permalink / raw)
  To: mm-commits, ziy, xlpang, shakeel.butt, ryan.roberts, nphamcs,
	mkoutny, ljs, liam, lance.yang, kasong, hannes, dev.jain, david,
	chengming.zhou, baolin.wang, baohua, qinyuntan, akpm

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 5617 bytes --]


The patch titled
     Subject: mm: thp: restore SHRINKER_NONSLAB on the deferred split shrinker
has been added to the -mm mm-new branch.  Its filename is
     mm-thp-restore-shrinker_nonslab-on-the-deferred-split-shrinker.patch

This patch will shortly appear at
     https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-thp-restore-shrinker_nonslab-on-the-deferred-split-shrinker.patch

This patch will later appear in the mm-new branch at
    git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm

Note, mm-new is a provisional staging ground for work-in-progress
patches, and acceptance into mm-new is a notification for others take
notice and to finish up reviews.  Please do not hesitate to respond to
review feedback and post updated versions to replace or incrementally
fixup patches in mm-new.

The mm-new branch of mm.git is not included in linux-next

If a few days of testing in mm-new is successful, the patch will me moved
into mm.git's mm-unstable branch, which is included in linux-next

Before you just go and hit "reply", please:
   a) Consider who else should be cc'ed
   b) Prefer to cc a suitable mailing list as well
   c) Ideally: find the original patch on the mailing list and do a
      reply-to-all to that, adding suitable additional cc's

*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***

The -mm tree is included into linux-next via various
branches at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
and is updated there most days

------------------------------------------------------
From: Qinyun Tan <qinyuntan@linux.alibaba.com>
Subject: mm: thp: restore SHRINKER_NONSLAB on the deferred split shrinker
Date: Fri, 4 Sep 2026 11:35:02 +0800

Patch series "mm: restore SHRINKER_NONSLAB on THP and zswap shrinkers".

While reviewing the patch "mm/list_lru: don't copy stale shrinker id from
non-memcg-aware shrinkers" (now in mm-unstable), Michal noticed that the
two non-slab memcg-aware shrinkers, the THP deferred split shrinker and
the zswap shrinker, are registered without SHRINKER_NONSLAB [1].

Without that flag, booting with cgroup.memory=nokmem silently demotes both
shrinkers to non-memcg-aware ones: memcg (limit-induced) reclaim neither
splits partially unmapped THPs nor writes back zswapped pages of the
cgroup under pressure.

Patch 1 restores the flag on the deferred split shrinker; it was lost when
commit fafaeceb89a5 ("mm: switch deferred split shrinker to list_lru")
re-registered the shrinker.

Patch 2 adds the flag to the zswap shrinker, which has never carried it
since its introduction in commit b5ba474f3f51 ("zswap: shrink zswap pool
based on memory pressure").


This patch (of 2):

On a system booted with cgroup.memory=nokmem, the deferred split shrinker
is quietly demoted to a non-memcg-aware one.  As a result, partially
unmapped THPs are only split under global reclaim; memcg (limit-induced)
reclaim never splits them, so a cgroup under memory pressure keeps its
underused THPs intact.

This is a regression from commit fafaeceb89a5 ("mm: switch deferred split
shrinker to list_lru"), which re-registered the shrinker without
SHRINKER_NONSLAB.  The shrinker had carried this flag since commit
0a432dcbeb32 ("mm: shrinker: make shrinker not depend on memcg kmem")
precisely so it would keep working with kmem accounting disabled.  Without
the flag, shrinker_memcg_alloc() fails with -ENOSYS under nokmem and the
shrinker loses its memcg awareness.

This was noticed by Michal during review of the patch "mm/list_lru: don't
copy stale shrinker id from non-memcg-aware shrinkers" [1].

Restore the flag.

Link: https://lore.kernel.org/20260904033503.4067283-1-qinyuntan@linux.alibaba.com
Link: https://lore.kernel.org/20260904033503.4067283-2-qinyuntan@linux.alibaba.com
Link: https://lore.kernel.org/lkml/697713c4-0857-485b-aba7-c74f37a3c8b4@linux.alibaba.com/ [1]
Fixes: fafaeceb89a5 ("mm: switch deferred split shrinker to list_lru")
Signed-off-by: Qinyun Tan <qinyuntan@linux.alibaba.com>
Suggested-by: Michal Koutný <mkoutny@suse.com>
Acked-by: Zi Yan <ziy@nvidia.com>
Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
Cc: Barry Song <baohua@kernel.org>
Cc: Chengming Zhou <chengming.zhou@linux.dev>
Cc: David Hildenbrand <david@kernel.org>
Cc: Dev Jain <dev.jain@arm.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Kairui Song <kasong@tencent.com>
Cc: Lance Yang <lance.yang@linux.dev>
Cc: Liam R. Howlett <liam@infradead.org>
Cc: Lorenzo Stoakes <ljs@kernel.org>
Cc: Nhat Pham <nphamcs@gmail.com>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: Shakeel Butt <shakeel.butt@linux.dev>
Cc: Xunlei Pang <xlpang@linux.alibaba.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 mm/huge_memory.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/mm/huge_memory.c~mm-thp-restore-shrinker_nonslab-on-the-deferred-split-shrinker
+++ a/mm/huge_memory.c
@@ -1064,7 +1064,8 @@ int folio_memcg_alloc_deferred(struct fo
 static int __init thp_shrinker_init(void)
 {
 	deferred_split_shrinker = shrinker_alloc(SHRINKER_NUMA_AWARE |
-						 SHRINKER_MEMCG_AWARE,
+						 SHRINKER_MEMCG_AWARE |
+						 SHRINKER_NONSLAB,
 						 "thp-deferred_split");
 	if (!deferred_split_shrinker)
 		return -ENOMEM;
_

Patches currently in -mm which might be from qinyuntan@linux.alibaba.com are

mm-list_lru-disable-memcg-awareness-under-cgroup_disable=memory.patch
mm-list_lru-dont-copy-stale-shrinker-id-from-non-memcg-aware-shrinkers.patch
mm-thp-restore-shrinker_nonslab-on-the-deferred-split-shrinker.patch
mm-zswap-mark-the-zswap-shrinker-shrinker_nonslab.patch


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-09-06  2:35 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-06  2:35 + mm-thp-restore-shrinker_nonslab-on-the-deferred-split-shrinker.patch added to mm-new branch Andrew Morton

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.