Commit e240e53a authored by Vlastimil Babka's avatar Vlastimil Babka
Browse files

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
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ menuconfig KASAN
		     (HAVE_ARCH_KASAN_SW_TAGS && CC_HAS_KASAN_SW_TAGS)) && \
		    CC_HAS_WORKING_NOSANITIZE_ADDRESS) || \
		   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
	help
	  Enables KASAN (Kernel Address Sanitizer) - a dynamic memory safety
+17 −4
Original line number Diff line number Diff line
@@ -230,6 +230,19 @@ config SLOB

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
	bool "Allow slab caches to be merged"
	default y
@@ -247,7 +260,7 @@ config SLAB_MERGE_DEFAULT

config SLAB_FREELIST_RANDOM
	bool "Randomize slab freelist"
	depends on SLAB || SLUB
	depends on SLAB || (SLUB && !SLUB_TINY)
	help
	  Randomizes the freelist order used on creating new pages. This
	  security feature reduces the predictability of the kernel slab
@@ -255,7 +268,7 @@ config SLAB_FREELIST_RANDOM

config SLAB_FREELIST_HARDENED
	bool "Harden slab freelist metadata"
	depends on SLAB || SLUB
	depends on SLAB || (SLUB && !SLUB_TINY)
	help
	  Many kernel heap attacks try to target slab cache metadata and
	  other infrastructure. This options makes minor performance
@@ -267,7 +280,7 @@ config SLAB_FREELIST_HARDENED
config SLUB_STATS
	default n
	bool "Enable SLUB performance statistics"
	depends on SLUB && SYSFS
	depends on SLUB && SYSFS && !SLUB_TINY
	help
	  SLUB statistics are useful to debug SLUBs allocation behavior in
	  order find ways to optimize the allocator. This should never be
@@ -279,7 +292,7 @@ config SLUB_STATS

config SLUB_CPU_PARTIAL
	default y
	depends on SLUB && SMP
	depends on SLUB && SMP && !SLUB_TINY
	bool "SLUB per cpu partial cache"
	help
	  Per cpu partial caches accelerate objects allocation and freeing
+1 −1
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ config DEBUG_SLAB
config SLUB_DEBUG
	default y
	bool "Enable SLUB debugging support" if EXPERT
	depends on SLUB && SYSFS
	depends on SLUB && SYSFS && !SLUB_TINY
	select STACKDEPOT if STACKTRACE_SUPPORT
	help
	  SLUB has extensive debug support features. Disabling these can