Re: [PATCH v4 06/22] slab: add sheaves to most caches

From: Hao Li

Date: Mon Jan 26 2026 - 01:36:38 EST


On Fri, Jan 23, 2026 at 07:52:44AM +0100, Vlastimil Babka wrote:
> In the first step to replace cpu (partial) slabs with sheaves, enable
> sheaves for almost all caches. Treat args->sheaf_capacity as a minimum,
> and calculate sheaf capacity with a formula that roughly follows the
> formula for number of objects in cpu partial slabs in set_cpu_partial().
>
> This should achieve roughly similar contention on the barn spin lock as
> there's currently for node list_lock without sheaves, to make
> benchmarking results comparable. It can be further tuned later.
>
> Don't enable sheaves for bootstrap caches as that wouldn't work. In
> order to recognize them by SLAB_NO_OBJ_EXT, make sure the flag exists
> even for !CONFIG_SLAB_OBJ_EXT.
>
> This limitation will be lifted for kmalloc caches after the necessary
> bootstrapping changes.
>
> Also do not enable sheaves for SLAB_NOLEAKTRACE caches to avoid
> recursion with kmemleak tracking (thanks to Breno Leitao).
>
> Reviewed-by: Suren Baghdasaryan <surenb@xxxxxxxxxx>
> Reviewed-by: Harry Yoo <harry.yoo@xxxxxxxxxx>
> Signed-off-by: Vlastimil Babka <vbabka@xxxxxxx>

Also, looks good to me.

As a side node, while looking into the test results reported by Zhao Liu [1], I
ran a quick test of the current patchset with the will-it-scale mmap2 workload.
In my runs, tuning capacity up or down did indeed have a noticeable impact on
performance. Hopefully we can make this tuning even smarter in follow-up work.

[1] https://lore.kernel.org/linux-mm/aWi9nAbIkTfYFoMM@xxxxxxxxx/

Reviewed-by: Hao Li <hao.li@xxxxxxxxx>

--
Thanks,
Hao