Re: [PATCH v2 00/21] remove the SLAB allocator

David Rientjes
2023-11-24T00:45:13Z

On Mon, 20 Nov 2023, Vlastimil Babka wrote:

> Changes from v1:
> - Added new Patch 01 to fix up kernel docs build (thanks Marco Elver)
> - Additional changes to Kconfig user visible texts in Patch 02 (thanks Kees
> Cook)
> - Whitespace fixes and other fixups (thanks Kees)
>
> The SLAB allocator has been deprecated since 6.5 and nobody has objected
> so far. As we agreed at LSF/MM, we should wait with the removal until
> the next LTS kernel is released. This is now determined to be 6.6, and
> we just missed 6.7, so now we can aim for 6.8 and start exposing the
> removal to linux-next during the 6.7 cycle. If nothing substantial pops
> up, will start including this in slab-next later this week.
>

I agree with the decision to remove the SLAB allocator, same as at LSF/MM.
Thanks for doing this, Vlastimil!

And thanks for deferring this until the next LTS kernel, it will give any
last minute hold outs a full year to raise any issues in their switch to
SLUB if they only only upgrade to LTS kernels at which point we'll have
done our due diligence to make people aware of SLAB's deprecation in 6.6.

I've completed testing on v1 of the series, so feel free to add

Acked-by: David Rientjes <rientjes@google.com>
Tested-by: David Rientjes <rientjes@google.com>

to each patch so I don't spam the list unnecessarily. I'll respond to
individual changes that were not in v1.

Thanks again!

> To keep the series reasonably sized and not pull in people from other
> subsystems than mm and closely related ones, I didn't attempt to remove
> every trace of unnecessary reference to dead config options in external
> areas, nor in the defconfigs. Such cleanups can be sent to and handled
> by respective maintainers after this is merged.
>
> Instead I have added some patches aimed to reap some immediate benefits
> of the removal, mainly by not having to split some fastpath code between
> slab_common.c and slub.c anymore. But that is also not an exhaustive
> effort and I expect more cleanups and optimizations will follow later.
>
> Patch 09 updates CREDITS for the removed mm/slab.c. Please point out if
> I missed someone not yet credited.
>
> Git version: https://git.kernel.org/vbabka/l/slab-remove-slab-v2r1
>
> ---
> Vlastimil Babka (21):
> mm/slab, docs: switch mm-api docs generation from slab.c to slub.c
> mm/slab: remove CONFIG_SLAB from all Kconfig and Makefile
> KASAN: remove code paths guarded by CONFIG_SLAB
> KFENCE: cleanup kfence_guarded_alloc() after CONFIG_SLAB removal
> mm/memcontrol: remove CONFIG_SLAB #ifdef guards
> cpu/hotplug: remove CPUHP_SLAB_PREPARE hooks
> mm/slab: remove CONFIG_SLAB code from slab common code
> mm/mempool/dmapool: remove CONFIG_DEBUG_SLAB ifdefs
> mm/slab: remove mm/slab.c and slab_def.h
> mm/slab: move struct kmem_cache_cpu declaration to slub.c
> mm/slab: move the rest of slub_def.h to mm/slab.h
> mm/slab: consolidate includes in the internal mm/slab.h
> mm/slab: move pre/post-alloc hooks from slab.h to slub.c
> mm/slab: move memcg related functions from slab.h to slub.c
> mm/slab: move struct kmem_cache_node from slab.h to slub.c
> mm/slab: move kfree() from slab_common.c to slub.c
> mm/slab: move kmalloc_slab() to mm/slab.h
> mm/slab: move kmalloc() functions from slab_common.c to slub.c
> mm/slub: remove slab_alloc() and __kmem_cache_alloc_lru() wrappers
> mm/slub: optimize alloc fastpath code layout
> mm/slub: optimize free fast path code layout
>
> CREDITS | 12 +-
> Documentation/core-api/mm-api.rst | 2 +-
> arch/arm64/Kconfig | 2 +-
> arch/s390/Kconfig | 2 +-
> arch/x86/Kconfig | 2 +-
> include/linux/cpuhotplug.h | 1 -
> include/linux/slab.h | 22 +-
> include/linux/slab_def.h | 124 --
> include/linux/slub_def.h | 204 --
> kernel/cpu.c | 5 -
> lib/Kconfig.debug | 1 -
> lib/Kconfig.kasan | 11 +-
> lib/Kconfig.kfence | 2 +-
> lib/Kconfig.kmsan | 2 +-
> mm/Kconfig | 68 +-
> mm/Kconfig.debug | 16 +-
> mm/Makefile | 6 +-
> mm/dmapool.c | 2 +-
> mm/kasan/common.c | 13 +-
> mm/kasan/kasan.h | 3 +-
> mm/kasan/quarantine.c | 7 -
> mm/kasan/report.c | 1 +
> mm/kfence/core.c | 4 -
> mm/memcontrol.c | 6 +-
> mm/mempool.c | 6 +-
> mm/slab.c | 4026 -------------------------------------
> mm/slab.h | 551 ++---
> mm/slab_common.c | 231 +--
> mm/slub.c | 617 +++++-
> 29 files changed, 815 insertions(+), 5134 deletions(-)
> ---
> base-commit: b85ea95d086471afb4ad062012a4d73cd328fa86
> change-id: 20231120-slab-remove-slab-a76ec668d8c6
>
> Best regards,
> --
> Vlastimil Babka <vbabka@suse.cz>
>
>