Re: [RFC PATCH 0/2] mm: zsmalloc: make shrinker compaction budget-aware
From: Chris Wiseman
Date: Wed Nov 04 2026 - 13:47:17 EST
On Wed, Nov 4, 2026 at 9:57 AM Nhat Pham <nphamcs@xxxxxxxxx> wrote:
>
> Is this precheck basically checking if we can free at least one zspage
> of the size class before proceeding? Yeah the number looks good -
> let's add that, in parallel!
Yeah, it just checks if a bucket has enough wasted slots to free at
least one full page before taking the locks. Sergey pointed out those
two counters aren't atomic together so an unlocked check is just a
best-effort hint - if you and Sergey are good with that, happy to send a
patch.
> Ah ok hmm. Sounds like internal compaction isn't that helpful, i.e
> zsmalloc already does a pretty decent job at packing objects that
> there aren't a terrible amount of internal fragmentation in the first
> place...?
> Should we do CONFIG_ZSMALLOC_SHRINKER (default to N or to
> CONFIG_ZSWAP) for now, and remove it in a couple of releases if users
> in the wild do not complain?
Compaction still helps when we trigger it between bursts (freed ~21 MB
before the swap storm and ~10 MB after). It just wastes time running
mid-swap when new writes are filling those open slots right back up.
Defaulting CONFIG_ZSMALLOC_SHRINKER to N (or CONFIG_ZSWAP) for a couple
releases makes sense to me.