Re: [PATCH v4 06/22] slab: add sheaves to most caches
From: Vlastimil Babka
Date: Mon Jan 26 2026 - 03:39:44 EST
On 1/26/26 07:36, Hao Li wrote:
> 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.
Right, thanks for checking that.
> [1] https://lore.kernel.org/linux-mm/aWi9nAbIkTfYFoMM@xxxxxxxxx/
>
> Reviewed-by: Hao Li <hao.li@xxxxxxxxx>
Thanks!