Commit e240e53a authored by Vlastimil Babka's avatar Vlastimil Babka

mm, slub: add CONFIG_SLUB_TINY

For tiny systems that have used SLOB until now, SLUB might be
impractical due to its higher memory usage. To help with that, introduce
an option CONFIG_SLUB_TINY that modifies SLUB to use less memory.
This is done by sacrificing scalability, security and debugging
features, therefore not recommended for any system with more than 16MB
RAM.

This commit introduces the option and uses it to set other related
options in a way that reduces memory usage.
Signed-off-by: default avatarVlastimil Babka <vbabka@suse.cz>
Acked-by: default avatarHyeonggon Yoo <42.hyeyoo@gmail.com>
Acked-by: default avatarMike Rapoport <rppt@linux.ibm.com>
Reviewed-by: default avatarChristoph Lameter <cl@linux.com>
parent 346907ce
...@@ -37,7 +37,7 @@ menuconfig KASAN ...@@ -37,7 +37,7 @@ menuconfig KASAN
(HAVE_ARCH_KASAN_SW_TAGS && CC_HAS_KASAN_SW_TAGS)) && \ (HAVE_ARCH_KASAN_SW_TAGS && CC_HAS_KASAN_SW_TAGS)) && \
CC_HAS_WORKING_NOSANITIZE_ADDRESS) || \ CC_HAS_WORKING_NOSANITIZE_ADDRESS) || \
HAVE_ARCH_KASAN_HW_TAGS HAVE_ARCH_KASAN_HW_TAGS
depends on (SLUB && SYSFS) || (SLAB && !DEBUG_SLAB) depends on (SLUB && SYSFS && !SLUB_TINY) || (SLAB && !DEBUG_SLAB)
select STACKDEPOT_ALWAYS_INIT select STACKDEPOT_ALWAYS_INIT
help help
Enables KASAN (Kernel Address Sanitizer) - a dynamic memory safety Enables KASAN (Kernel Address Sanitizer) - a dynamic memory safety
......
...@@ -230,6 +230,19 @@ config SLOB ...@@ -230,6 +230,19 @@ config SLOB
endchoice endchoice
config SLUB_TINY
bool "Configure SLUB for minimal memory footprint"
depends on SLUB && EXPERT
select SLAB_MERGE_DEFAULT
help
Configures the SLUB allocator in a way to achieve minimal memory
footprint, sacrificing scalability, debugging and other features.
This is intended only for the smallest system that had used the
SLOB allocator and is not recommended for systems with more than
16MB RAM.
If unsure, say N.
config SLAB_MERGE_DEFAULT config SLAB_MERGE_DEFAULT
bool "Allow slab caches to be merged" bool "Allow slab caches to be merged"
default y default y
...@@ -247,7 +260,7 @@ config SLAB_MERGE_DEFAULT ...@@ -247,7 +260,7 @@ config SLAB_MERGE_DEFAULT
config SLAB_FREELIST_RANDOM config SLAB_FREELIST_RANDOM
bool "Randomize slab freelist" bool "Randomize slab freelist"
depends on SLAB || SLUB depends on SLAB || (SLUB && !SLUB_TINY)
help help
Randomizes the freelist order used on creating new pages. This Randomizes the freelist order used on creating new pages. This
security feature reduces the predictability of the kernel slab security feature reduces the predictability of the kernel slab
...@@ -255,7 +268,7 @@ config SLAB_FREELIST_RANDOM ...@@ -255,7 +268,7 @@ config SLAB_FREELIST_RANDOM
config SLAB_FREELIST_HARDENED config SLAB_FREELIST_HARDENED
bool "Harden slab freelist metadata" bool "Harden slab freelist metadata"
depends on SLAB || SLUB depends on SLAB || (SLUB && !SLUB_TINY)
help help
Many kernel heap attacks try to target slab cache metadata and Many kernel heap attacks try to target slab cache metadata and
other infrastructure. This options makes minor performance other infrastructure. This options makes minor performance
...@@ -267,7 +280,7 @@ config SLAB_FREELIST_HARDENED ...@@ -267,7 +280,7 @@ config SLAB_FREELIST_HARDENED
config SLUB_STATS config SLUB_STATS
default n default n
bool "Enable SLUB performance statistics" bool "Enable SLUB performance statistics"
depends on SLUB && SYSFS depends on SLUB && SYSFS && !SLUB_TINY
help help
SLUB statistics are useful to debug SLUBs allocation behavior in SLUB statistics are useful to debug SLUBs allocation behavior in
order find ways to optimize the allocator. This should never be order find ways to optimize the allocator. This should never be
...@@ -279,7 +292,7 @@ config SLUB_STATS ...@@ -279,7 +292,7 @@ config SLUB_STATS
config SLUB_CPU_PARTIAL config SLUB_CPU_PARTIAL
default y default y
depends on SLUB && SMP depends on SLUB && SMP && !SLUB_TINY
bool "SLUB per cpu partial cache" bool "SLUB per cpu partial cache"
help help
Per cpu partial caches accelerate objects allocation and freeing Per cpu partial caches accelerate objects allocation and freeing
......
...@@ -56,7 +56,7 @@ config DEBUG_SLAB ...@@ -56,7 +56,7 @@ config DEBUG_SLAB
config SLUB_DEBUG config SLUB_DEBUG
default y default y
bool "Enable SLUB debugging support" if EXPERT bool "Enable SLUB debugging support" if EXPERT
depends on SLUB && SYSFS depends on SLUB && SYSFS && !SLUB_TINY
select STACKDEPOT if STACKTRACE_SUPPORT select STACKDEPOT if STACKTRACE_SUPPORT
help help
SLUB has extensive debug support features. Disabling these can SLUB has extensive debug support features. Disabling these can
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment