[PATCH v2 0/8] memcg: remove the v1 soft limit

Shakeel Butt posted 8 patches 3 weeks, 2 days ago
include/linux/memcontrol.h    |  27 ---
include/linux/mmzone.h        |  30 +--
include/trace/events/vmscan.h |  14 --
mm/internal.h                 |   4 -
mm/memcontrol-v1.c            | 392 ++--------------------------------
mm/memcontrol-v1.h            |  12 +-
mm/memcontrol.c               |   7 +-
mm/vmscan.c                   |  96 +--------
8 files changed, 34 insertions(+), 548 deletions(-)
[PATCH v2 0/8] memcg: remove the v1 soft limit
Posted by Shakeel Butt 3 weeks, 2 days ago
The v1 soft limit was deprecated in v6.12 by commit 569c4f62d84a ("memcg:
initiate deprecation of v1 soft limit") and nobody has reported depending
on it in the ~21 months since. memory.low and memory.min in v2 have
covered the same ground for far longer.

The knob has since been made inert by "memcg: make the v1 soft limit knob
inert", already queued in mm-hotfixes as a backportable fix for a syzbot
report [1]. Nothing can enter the soft limit rbtree anymore, so this
series just deletes the machinery that is now dead: the reclaim pass in
kswapd and direct reclaim, mem_cgroup_shrink_node() and its tracepoints,
the per-node rbtree, lru_gen_soft_reclaim() and the MEMCG_LRU_HEAD op, the
per-node tree fields, mem_cgroup->soft_limit, and finally the v1 event
ratelimiting which is now down to a single target.

memory.soft_limit_in_bytes itself is untouched: writes stay ignored and
reads keep returning the maximum value.

Changes since v1 [2]:
- Dropped "memcg: make the v1 soft limit knob inert" (1/9 in v1), which is
  already queued in mm-hotfixes, making this an 8-patch series.
- Collected the acks and review tags. No code changes.

Sashiko's v1 review [3] asked whether the softlimit tracepoints,
lru_gen_soft_reclaim(), the per-node tree fields and the
MEM_CGROUP_TARGET_SOFTLIMIT ratelimiting could go too. They all can and
they all do, in patches 3/8, 5/8, 6/8 and 8/8 of this same series.

[1] https://lore.kernel.org/all/6a7a6929.b50370da.49fe0.005e.GAE@google.com/
[2] https://lore.kernel.org/all/20260811203203.3456029-1-shakeel.butt@linux.dev/
[3] https://sashiko.dev/#/patchset/20260811203203.3456029-1-shakeel.butt@linux.dev

Shakeel Butt (8):
  memcg: remove v1 soft limit reclaim
  memcg: remove mem_cgroup_shrink_node()
  memcg: remove the soft limit reclaim tracepoints
  memcg: remove the soft limit rbtree
  memcg: remove lru_gen_soft_reclaim()
  memcg: remove the per-node soft limit tree fields
  memcg: remove mem_cgroup->soft_limit
  memcg: simplify v1 event ratelimiting

 include/linux/memcontrol.h    |  27 ---
 include/linux/mmzone.h        |  30 +--
 include/trace/events/vmscan.h |  14 --
 mm/internal.h                 |   4 -
 mm/memcontrol-v1.c            | 392 ++--------------------------------
 mm/memcontrol-v1.h            |  12 +-
 mm/memcontrol.c               |   7 +-
 mm/vmscan.c                   |  96 +--------
 8 files changed, 34 insertions(+), 548 deletions(-)

-- 
2.53.0-Meta
Re: [PATCH v2 0/8] memcg: remove the v1 soft limit
Posted by Andrew Morton 3 weeks, 2 days ago
On Wed,  2 Sep 2026 10:43:03 -0700 Shakeel Butt <shakeel.butt@linux.dev> wrote:

> The v1 soft limit was deprecated in v6.12 by commit 569c4f62d84a ("memcg:
> initiate deprecation of v1 soft limit") and nobody has reported depending
> on it in the ~21 months since. memory.low and memory.min in v2 have
> covered the same ground for far longer.
> 
> The knob has since been made inert by "memcg: make the v1 soft limit knob
> inert", already queued in mm-hotfixes as a backportable fix for a syzbot
> report [1]. Nothing can enter the soft limit rbtree anymore, so this
> series just deletes the machinery that is now dead: the reclaim pass in
> kswapd and direct reclaim, mem_cgroup_shrink_node() and its tracepoints,
> the per-node rbtree, lru_gen_soft_reclaim() and the MEMCG_LRU_HEAD op, the
> per-node tree fields, mem_cgroup->soft_limit, and finally the v1 event
> ratelimiting which is now down to a single target.
> 
> memory.soft_limit_in_bytes itself is untouched: writes stay ignored and
> reads keep returning the maximum value.

Thanks, I updated mm-unstable.

> Changes since v1 [2]:
> - Dropped "memcg: make the v1 soft limit knob inert" (1/9 in v1), which is
>   already queued in mm-hotfixes, making this an 8-patch series.
> - Collected the acks and review tags. No code changes.

I've confirmed that v2 made no alterations to mm.git.