• David Hildenbrand's avatar
    virtio-mem: don't special-case ZONE_MOVABLE · 27f85279
    David Hildenbrand authored
    When introducing virtio-mem, the semantics of ZONE_MOVABLE were rather
    unclear, which is why we special-cased ZONE_MOVABLE such that partially
    plugged blocks would never end up in ZONE_MOVABLE.
    
    Now that the semantics are much clearer (and will be documented in a
    follow-up patch including the new virtio-mem behavior), let's allow to
    online partially plugged memory blocks to ZONE_MOVABLE and also consider
    memory blocks that were onlined to ZONE_MOVABLE when unplugging memory.
    While unplugged memory pages are, in general, unmovable, they can be
    skipped when offlining memory.
    
    virtio-mem only unplugs fairly big chunks (in the megabyte range) and
    rather tries to shrink the memory region than randomly choosing memory.
    In theory, if all other pages in the movable zone would be movable,
    virtio-mem would only shrink that zone and not create any kind of
    fragmentation.
    
    In the future, we might want to remember the zone again and use the
    information when (un)plugging memory.  For now, let's keep it simple.
    
    Note: Support for defragmentation is planned, to deal with fragmentation
    after unplug due to memory chunks within memory blocks that could not get
    unplugged before (e.g., somebody pinning pages within ZONE_MOVABLE for a
    longer time).
    Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Cc: Jason Wang <jasowang@redhat.com>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Pankaj Gupta <pankaj.gupta.linux@gmail.com>
    Cc: Baoquan He <bhe@redhat.com>
    Cc: Mike Rapoport <rppt@kernel.org>
    Cc: Qian Cai <cai@lca.pw>
    Link: http://lkml.kernel.org/r/20200816125333.7434-6-david@redhat.comSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    27f85279
virtio_mem.c 52 KB