Skip to content
  • Michal Hocko's avatar
    mm, memory_hotplug: drop artificial restriction on online/offline · 57c0a172
    Michal Hocko authored
    Patch series "remove CONFIG_MOVABLE_NODE".
    
    I am continuing to clean up the memory hotplug code and
    CONFIG_MOVABLE_NODE seems dubious at best.  The following two patches
    simply removes the flag and make it de-facto always enabled.
    
    The current semantic of the config option is twofold 1) it automatically
    binds hotplugable nodes to have memory in zone_movable by default when
    movable_node is enabled 2) forbids memory hotplug to online all the
    memory as movable when !CONFIG_MOVABLE_NODE.
    
    The later restriction is quite dubious because there is no clear cut of
    how much normal memory do we need for a reasonable system operation.  A
    single memory block which is sufficient to allow further movable onlines
    is far from sufficient (e.g a node with >2GB and memblocks 128MB will
    fill up this zone with struct pages leaving nothing for other
    allocations).  Removing the config option will not only reduce the
    configuration space it also removes quite some code.
    
    The semantic of the movable_node command line parameter is preserved.
    
    The first patch removes the restriction mentioned above and the second
    one simply removes all the CONFIG_MOVABLE_NODE related stuff.  The last
    patch moves movable_node flag handling to memory_hotplug proper where it
    belongs.
    
    [1] http://lkml.kernel.org/r/20170524122411.25212-1-mhocko@kernel.org
    
    This patch (of 3):
    
    Commit 74d42d8f ("memory_hotplug: ensure every online node has
    NORMAL memory") has introduced a restriction that every numa node has to
    have at least some memory in !movable zones before a first movable
    memory can be onlined if !CONFIG_MOVABLE_NODE.
    
    Likewise can_offline_normal checks the amount of normal memory in
    !movable zones and it disallows to offline memory if there is no normal
    memory left with a justification that "memory-management acts bad when
    we have nodes which is online but don't have any normal memory".
    
    While it is true that not having _any_ memory for kernel allocations on
    a NUMA node is far from great and such a node would be quite subotimal
    because all kernel allocations will have to fallback to another NUMA
    node but there is no reason to disallow such a configuration in
    principle.
    
    Besides that there is not really a big difference to have one memblock
    for ZONE_NORMAL available or none.  With 128MB size memblocks the system
    might trash on the kernel allocations requests anyway.  It is really
    hard to draw a line on how much normal memory is really sufficient so we
    have to rely on administrator to configure system sanely therefore drop
    the artificial restriction and remove can_offline_normal and
    can_online_high_movable altogether.
    
    Link: http://lkml.kernel.org/r/20170529114141.536-2-mhocko@kernel.org
    
    
    Signed-off-by: default avatarMichal Hocko <mhocko@suse.com>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Acked-by: default avatarReza Arbab <arbab@linux.vnet.ibm.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Cc: Yasuaki Ishimatsu <yasu.isimatu@gmail.com>
    Cc: Xishi Qiu <qiuxishi@huawei.com>
    Cc: Kani Toshimitsu <toshi.kani@hpe.com>
    Cc: Chen Yucong <slaoub@gmail.com>
    Cc: Joonsoo Kim <js1304@gmail.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Daniel Kiper <daniel.kiper@oracle.com>
    Cc: Igor Mammedov <imammedo@redhat.com>
    Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    57c0a172