Fandom

How To Wiki

How to configure the Linux kernel/mm

< How to configure the Linux kernel

1,795pages on
this wiki
Add New Page
Talk0 Share

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Howto configure the Linux kernel / mm



  • Option: SELECT_MEMORY_MODEL
    • Kernel Versions: 2.6.15.6 ...

_bool y

    • depends on EXPERIMENTAL || ARCH_SELECT_MEMORY_MODEL


"Memory model"

    • depends on SELECT_MEMORY_MODEL
    • default DISCONTIGMEM_MANUAL if ARCH_DISCONTIGMEM_DEFAULT
    • default SPARSEMEM_MANUAL if ARCH_SPARSEMEM_DEFAULT
    • default FLATMEM_MANUAL


  • Option: FLATMEM_MANUAL
    • Kernel Versions: 2.6.15.6 ...
    • (on/off) Flat Memory
    • depends on !ARCH_DISCONTIGMEM_ENABLE || ARCH_FLATMEM_ENABLE
      This option allows you to change some of the ways that Linux manages its memory internally. Most users will only have one option here: FLATMEM. This is normal and a correct option.
      Some users of more advanced features like NUMA and memory hotplug may have different options here. DISCONTIGMEM is an more mature, better tested system, but is incompatible with memory hotplug and may suffer decreased performance over SPARSEMEM. If unsure between Sparse Memory and Discontiguous Memory, choose Discontiguous Memory.
      If unsure, choose this option (Flat Memory) over any other.


  • Option: DISCONTIGMEM_MANUAL
    • Kernel Versions: 2.6.15.6 ...
    • (on/off) Discontiguous Memory
    • depends on ARCH_DISCONTIGMEM_ENABLE
      This option provides enhanced support for discontiguous memory systems, over FLATMEM. These systems have holes in their physical address spaces, and this option provides more efficient handling of these holes. However, the vast majority of hardware has quite flat address spaces, and can have degraded performance from extra overhead that this option imposes.
      Many NUMA configurations will have this as the only option.
      If unsure, choose "Flat Memory" over this option.


  • Option: SPARSEMEM_MANUAL
    • Kernel Versions: 2.6.15.6 ...
    • (on/off) Sparse Memory
    • depends on ARCH_SPARSEMEM_ENABLE
      This will be the only option for some systems, including memory hotplug systems. This is normal.
      For many other systems, this will be an alternative to Discontiguous Memory. This option provides some potential performance benefits, along with decreased code complexity, but it is newer, and more experimental.
      If unsure, choose "Discontiguous Memory" or "Flat Memory" over this option.



  • Option: DISCONTIGMEM
    • Kernel Versions: 2.6.15.6 ...

_bool y

    • depends on (!SELECT_MEMORY_MODEL && ARCH_DISCONTIGMEM_ENABLE) || DISCONTIGMEM_MANUAL


  • Option: SPARSEMEM
    • Kernel Versions: 2.6.15.6 ...

_bool y

    • depends on SPARSEMEM_MANUAL


  • Option: FLATMEM
    • Kernel Versions: 2.6.15.6 ...

_bool y

    • depends on (!DISCONTIGMEM && !SPARSEMEM) || FLATMEM_MANUAL


  • Option: FLAT_NODE_MEM_MAP
    • Kernel Versions: 2.6.15.6 ...

_bool y

    • depends on !SPARSEMEM
Both the NUMA code and DISCONTIGMEM use arrays of pg_data_t's
to represent different areas of memory. This variable allows
those dependencies to exist individually.


  • Option: NEED_MULTIPLE_NODES
    • Kernel Versions: 2.6.15.6 ...

_bool y

    • depends on DISCONTIGMEM || NUMA


  • Option: HAVE_MEMORY_PRESENT
    • Kernel Versions: 2.6.15.6 ...

_bool y

    • depends on ARCH_HAVE_MEMORY_PRESENT || SPARSEMEM
SPARSEMEM_EXTREME (which is the default) does some bootmem
allocations when memory_present() is called. If this can not
be done on your architecture, select this option. However,
statically allocating the mem_section[] array can potentially
consume vast quantities of .bss, so be careful.
This option will also potentially produce smaller runtime code
with gcc 3.4 and later.


  • Option: SPARSEMEM_STATIC
    • Kernel Versions: 2.6.15.6 ...

_bool n

Architectecture platforms which require a two level mem_section in SPARSEMEM
must select this option. This is usually for architecture platforms with
an extremely sparse physical address space.


  • Option: SPARSEMEM_EXTREME
    • Kernel Versions: 2.6.15.6 ...

_bool y

    • depends on SPARSEMEM && !SPARSEMEM_STATIC
eventually, we can have this option just 'select SPARSEMEM'


  • Option: MEMORY_HOTPLUG
    • Kernel Versions: 2.6.15.6 ...
    • (on/off) Allow for memory hot-add
    • depends on SPARSEMEM && HOTPLUG && !SOFTWARE_SUSPEND

"Memory hotplug is currently incompatible with Software Suspend"

    • depends on SPARSEMEM && HOTPLUG && SOFTWARE_SUSPEND
Heavily threaded applications may benefit from splitting the mm-wide
page_table_lock, so that faults on different parts of the user address
space can be handled with less contention: split it at this NR_CPUS.
Default to 4 for wider testing, though 8 might be more appropriate.
ARM's adjust_pte (unused if VIPT) depends on mm-wide page_table_lock.
PA-RISC 7xxx's spinlock_t would enlarge struct page from 32 to 44 bytes.


  • Option: SPLIT_PTLOCK_CPUS
    • Kernel Versions: 2.6.15.6 ...
    • default "4096" if ARM && !CPU_CACHE_VIPT
    • default "4096" if PARISC && !PA20
    • default "4"


Linux Kernel Configuration

Also on Fandom

Random Wiki