On Thu 02-01-14 12:20:17, Dave Hansen wrote: > > From: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx> > > This continues in a series of patches to clean up the > configuration menus. I believe they've become really hard to > navigate and there are some simple things we can do to make > things easier to find. > > This creates a "Memory Options" menu and moves some things like > swap and slab configuration under them. It also moves SLUB_DEBUG > to the debugging menu. > > After this patch, the menu has the following options: > > [ ] Memory placement aware NUMA scheduler > [*] Enable VM event counters for /proc/vmstat > [ ] Disable heap randomization > [*] Support for paging of anonymous memory (swap) > Choose SLAB allocator (SLUB (Unqueued Allocator)) > [*] SLUB per cpu partial cache > [*] SLUB: attempt to use double-cmpxchg operations Is there any reason to keep them in init/Kconfig rather than mm/Kconfig? It would sound like a logical place to have them all, no? > Signed-off-by: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx> > Cc: linux-mm@xxxxxxxxx > --- > > linux.git-davehans/init/Kconfig | 243 ++++++++++++++++++------------------ > linux.git-davehans/mm/Kconfig.debug | 11 + > 2 files changed, 135 insertions(+), 119 deletions(-) > > diff -puN init/Kconfig~organize-memory-config-options init/Kconfig > --- linux.git/init/Kconfig~organize-memory-config-options 2014-01-02 11:24:20.925790194 -0800 > +++ linux.git-davehans/init/Kconfig 2014-01-02 11:24:20.931790464 -0800 > @@ -208,16 +208,6 @@ config DEFAULT_HOSTNAME > but you may wish to use a different default here to make a minimal > system more usable with less configuration. > > -config SWAP > - bool "Support for paging of anonymous memory (swap)" > - depends on MMU && BLOCK > - default y > - help > - This option allows you to choose whether you want to have support > - for so called swap devices or swap files in your kernel that are > - used to provide more virtual memory than the actual RAM present > - in your computer. If unsure say Y. > - > config SYSVIPC > bool "System V IPC" > ---help--- > @@ -760,6 +750,130 @@ endchoice > > endmenu # "RCU Subsystem" > > +menu "Memory Options" > + > +config NUMA_BALANCING > + bool "Memory placement aware NUMA scheduler" > + depends on ARCH_SUPPORTS_NUMA_BALANCING > + depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY > + depends on SMP && NUMA && MIGRATION > + help > + This option adds support for automatic NUMA aware memory/task placement. > + The mechanism is quite primitive and is based on migrating memory when > + it has references to the node the task is running on. > + > + This system will be inactive on UMA systems. > + > +config VM_EVENT_COUNTERS > + default y > + bool "Enable VM event counters for /proc/vmstat" if EXPERT > + help > + VM event counters are needed for event counts to be shown. > + This option allows the disabling of the VM event counters > + on EXPERT systems. /proc/vmstat will only show page counts > + if VM event counters are disabled. > + > +config COMPAT_BRK > + bool "Disable heap randomization" > + default y > + help > + Randomizing heap placement makes heap exploits harder, but it > + also breaks ancient binaries (including anything libc5 based). > + This option changes the bootup default to heap randomization > + disabled, and can be overridden at runtime by setting > + /proc/sys/kernel/randomize_va_space to 2. > + > + On non-ancient distros (post-2000 ones) N is usually a safe choice. > + > +config SWAP > + bool "Support for paging of anonymous memory (swap)" > + depends on MMU && BLOCK > + default y > + help > + This option allows you to choose whether you want to have support > + for so called swap devices or swap files in your kernel that are > + used to provide more virtual memory than the actual RAM present > + in your computer. If unsure say Y. > + > +choice > + prompt "Choose SLAB allocator" > + default SLUB > + help > + This option allows to select a slab allocator. > + > +config SLAB > + bool "SLAB" > + help > + The regular slab allocator that is established and known to work > + well in all environments. It organizes cache hot objects in > + per cpu and per node queues. > + > +config SLUB > + bool "SLUB (Unqueued Allocator)" > + help > + SLUB is a slab allocator that minimizes cache line usage > + instead of managing queues of cached objects (SLAB approach). > + Per cpu caching is realized using slabs of objects instead > + of queues of objects. SLUB can use memory efficiently > + and has enhanced diagnostics. SLUB is the default choice for > + a slab allocator. > + > +config SLOB > + depends on EXPERT > + bool "SLOB (Simple Allocator)" > + help > + SLOB replaces the stock allocator with a drastically simpler > + allocator. SLOB is generally more space efficient but > + does not perform as well on large systems. > + > +endchoice > + > +config SLUB_CPU_PARTIAL > + default y > + depends on SLUB && SMP > + bool "SLUB per cpu partial cache" > + help > + Per cpu partial caches accellerate objects allocation and freeing > + that is local to a processor at the price of more indeterminism > + in the latency of the free. On overflow these caches will be cleared > + which requires the taking of locks that may cause latency spikes. > + Typically one would choose no for a realtime system. > + > +config SLUB_ATTEMPT_CMPXCHG_DOUBLE > + default y > + depends on SLUB && HAVE_CMPXCHG_DOUBLE > + bool "SLUB: attempt to use double-cmpxchg operations" > + help > + Some CPUs support instructions that let you do a large double-word > + atomic cmpxchg operation. This keeps the SLUB fastpath from > + needing to disable interrupts. > + > + If you are unsure, say y. > + > +config MMAP_ALLOW_UNINITIALIZED > + bool "Allow mmapped anonymous memory to be uninitialized" > + depends on EXPERT && !MMU > + default n > + help > + Normally, and according to the Linux spec, anonymous memory obtained > + from mmap() has it's contents cleared before it is passed to > + userspace. Enabling this config option allows you to request that > + mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus > + providing a huge performance boost. If this option is not enabled, > + then the flag will be ignored. > + > + This is taken advantage of by uClibc's malloc(), and also by > + ELF-FDPIC binfmt's brk and stack allocator. > + > + Because of the obvious security issues, this option should only be > + enabled on embedded devices where you control what is run in > + userspace. Since that isn't generally a problem on no-MMU systems, > + it is normally safe to say Y here. > + > + See Documentation/nommu-mmap.txt for more information. > + > +endmenu # "Memory Optionse > + > config IKCONFIG > tristate "Kernel .config support" > ---help--- > @@ -840,18 +954,6 @@ config NUMA_BALANCING_DEFAULT_ENABLED > If set, automatic NUMA balancing will be enabled if running on a NUMA > machine. > > -config NUMA_BALANCING > - bool "Memory placement aware NUMA scheduler" > - depends on ARCH_SUPPORTS_NUMA_BALANCING > - depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY > - depends on SMP && NUMA && MIGRATION > - help > - This option adds support for automatic NUMA aware memory/task placement. > - The mechanism is quite primitive and is based on migrating memory when > - it has references to the node the task is running on. > - > - This system will be inactive on UMA systems. > - > menuconfig CGROUPS > boolean "Control Group support" > depends on EVENTFD > @@ -1529,103 +1631,6 @@ config DEBUG_PERF_USE_VMALLOC > > endmenu > > -config VM_EVENT_COUNTERS > - default y > - bool "Enable VM event counters for /proc/vmstat" if EXPERT > - help > - VM event counters are needed for event counts to be shown. > - This option allows the disabling of the VM event counters > - on EXPERT systems. /proc/vmstat will only show page counts > - if VM event counters are disabled. > - > -config SLUB_DEBUG > - default y > - bool "Enable SLUB debugging support" if EXPERT > - depends on SLUB && SYSFS > - help > - SLUB has extensive debug support features. Disabling these can > - result in significant savings in code size. This also disables > - SLUB sysfs support. /sys/slab will not exist and there will be > - no support for cache validation etc. > - > -config COMPAT_BRK > - bool "Disable heap randomization" > - default y > - help > - Randomizing heap placement makes heap exploits harder, but it > - also breaks ancient binaries (including anything libc5 based). > - This option changes the bootup default to heap randomization > - disabled, and can be overridden at runtime by setting > - /proc/sys/kernel/randomize_va_space to 2. > - > - On non-ancient distros (post-2000 ones) N is usually a safe choice. > - > -choice > - prompt "Choose SLAB allocator" > - default SLUB > - help > - This option allows to select a slab allocator. > - > -config SLAB > - bool "SLAB" > - help > - The regular slab allocator that is established and known to work > - well in all environments. It organizes cache hot objects in > - per cpu and per node queues. > - > -config SLUB > - bool "SLUB (Unqueued Allocator)" > - help > - SLUB is a slab allocator that minimizes cache line usage > - instead of managing queues of cached objects (SLAB approach). > - Per cpu caching is realized using slabs of objects instead > - of queues of objects. SLUB can use memory efficiently > - and has enhanced diagnostics. SLUB is the default choice for > - a slab allocator. > - > -config SLOB > - depends on EXPERT > - bool "SLOB (Simple Allocator)" > - help > - SLOB replaces the stock allocator with a drastically simpler > - allocator. SLOB is generally more space efficient but > - does not perform as well on large systems. > - > -endchoice > - > -config SLUB_CPU_PARTIAL > - default y > - depends on SLUB && SMP > - bool "SLUB per cpu partial cache" > - help > - Per cpu partial caches accellerate objects allocation and freeing > - that is local to a processor at the price of more indeterminism > - in the latency of the free. On overflow these caches will be cleared > - which requires the taking of locks that may cause latency spikes. > - Typically one would choose no for a realtime system. > - > -config MMAP_ALLOW_UNINITIALIZED > - bool "Allow mmapped anonymous memory to be uninitialized" > - depends on EXPERT && !MMU > - default n > - help > - Normally, and according to the Linux spec, anonymous memory obtained > - from mmap() has it's contents cleared before it is passed to > - userspace. Enabling this config option allows you to request that > - mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus > - providing a huge performance boost. If this option is not enabled, > - then the flag will be ignored. > - > - This is taken advantage of by uClibc's malloc(), and also by > - ELF-FDPIC binfmt's brk and stack allocator. > - > - Because of the obvious security issues, this option should only be > - enabled on embedded devices where you control what is run in > - userspace. Since that isn't generally a problem on no-MMU systems, > - it is normally safe to say Y here. > - > - See Documentation/nommu-mmap.txt for more information. > - > config PROFILING > bool "Profiling support" > help > diff -puN mm/Kconfig.debug~organize-memory-config-options mm/Kconfig.debug > --- linux.git/mm/Kconfig.debug~organize-memory-config-options 2014-01-02 11:24:20.927790284 -0800 > +++ linux.git-davehans/mm/Kconfig.debug 2014-01-02 11:24:20.931790464 -0800 > @@ -27,3 +27,14 @@ config PAGE_POISONING > config PAGE_GUARD > bool > select WANT_PAGE_DEBUG_FLAGS > + > +config SLUB_DEBUG > + default y > + bool "Enable SLUB debugging support" if EXPERT > + depends on SLUB && SYSFS > + help > + SLUB has extensive debug support features. Disabling these can > + result in significant savings in code size. This also disables > + SLUB sysfs support. /sys/slab will not exist and there will be > + no support for cache validation etc. > + > _ > > -- > To unsubscribe, send a message with 'unsubscribe linux-mm' in > the body to majordomo@xxxxxxxxx. For more info on Linux MM, > see: http://www.linux-mm.org/ . > Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a> -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>