Skip to content
  • Lai Jiangshan's avatar
    mm, memory-hotplug: dynamic configure movable memory and portion memory · 511c2aba
    Lai Jiangshan authored
    
    
    Add online_movable and online_kernel for logic memory hotplug.  This is
    the dynamic version of "movablecore" & "kernelcore".
    
    We have the same reason to introduce it as to introduce "movablecore" &
    "kernelcore".  It has the same motive as "movablecore" & "kernelcore", but
    it is dynamic/running-time:
    
    o We can configure memory as kernelcore or movablecore after boot.
    
      Userspace workload is increased, we need more hugepage, we can't use
      "online_movable" to add memory and allow the system use more
      THP(transparent-huge-page), vice-verse when kernel workload is increase.
    
      Also help for virtualization to dynamic configure host/guest's memory,
      to save/(reduce waste) memory.
    
      Memory capacity on Demand
    
    o When a new node is physically online after boot, we need to use
      "online_movable" or "online_kernel" to configure/portion it as we
      expected when we logic-online it.
    
      This configuration also helps for physically-memory-migrate.
    
    o all benefit as the same as existed "movablecore" & "kernelcore".
    
    o Preparing for movable-node, which is very important for power-saving,
      hardware partitioning and high-available-system(hardware fault
      management).
    
    (Note, we don't introduce movable-node here.)
    
    Action behavior:
    When a memoryblock/memorysection is onlined by "online_movable", the kernel
    will not have directly reference to the page of the memoryblock,
    thus we can remove that memory any time when needed.
    
    When it is online by "online_kernel", the kernel can use it.
    When it is online by "online", the zone type doesn't changed.
    
    Current constraints:
    Only the memoryblock which is adjacent to the ZONE_MOVABLE
    can be online from ZONE_NORMAL to ZONE_MOVABLE.
    
    [akpm@linux-foundation.org: use min_t, cleanups]
    Signed-off-by: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
    Signed-off-by: default avatarWen Congyang <wency@cn.fujitsu.com>
    Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
    Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
    Cc: Jiang Liu <jiang.liu@huawei.com>
    Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Minchan Kim <minchan.kim@gmail.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Yinghai Lu <yinghai@kernel.org>
    Cc: Rusty Russell <rusty@rustcorp.com.au>
    Cc: Greg KH <greg@kroah.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    511c2aba