• David Rientjes's avatar
    [PATCH] x86-64: configurable fake numa node sizes · 8b8ca80e
    David Rientjes authored
    Extends the numa=fake x86_64 command-line option to allow for configurable
    node sizes.  These nodes can be used in conjunction with cpusets for coarse
    memory resource management.
    
    The old command-line option is still supported:
      numa=fake=32	gives 32 fake NUMA nodes, ignoring the NUMA setup of the
    		actual machine.
    
    But now you may configure your system for the node sizes of your choice:
      numa=fake=2*512,1024,2*256
    		gives two 512M nodes, one 1024M node, two 256M nodes, and
    		the rest of system memory to a sixth node.
    
    The existing hash function is maintained to support the various node sizes
    that are possible with this implementation.
    
    Each node of the same size receives roughly the same amount of available
    pages, regardless of any reserved memory with its address range.  The total
    available pages on the system is calculated and divided by the number of equal
    nodes to allocate.  These nodes are then dynamically allocated and their
    borders extended until such time as their number of available pages reaches
    the required size.
    
    Configurable node sizes are recommended when used in conjunction with cpusets
    for memory control because it eliminates the overhead associated with scanning
    the zonelists of many smaller full nodes on page_alloc().
    
    Cc: Andi Kleen <ak@suse.de>
    Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
    Signed-off-by: default avatarAndi Kleen <ak@suse.de>
    Cc: Paul Jackson <pj@sgi.com>
    Cc: Christoph Lameter <clameter@engr.sgi.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    8b8ca80e
numa.c 15.2 KB