• David Hildenbrand's avatar
    mm/page_alloc: move pages to tail in move_to_free_list() · 293ffa5e
    David Hildenbrand authored
    Whenever we move pages between freelists via move_to_free_list()/
    move_freepages_block(), we don't actually touch the pages:
    1. Page isolation doesn't actually touch the pages, it simply isolates
       pageblocks and moves all free pages to the MIGRATE_ISOLATE freelist.
       When undoing isolation, we move the pages back to the target list.
    2. Page stealing (steal_suitable_fallback()) moves free pages directly
       between lists without touching them.
    3. reserve_highatomic_pageblock()/unreserve_highatomic_pageblock() moves
       free pages directly between freelists without touching them.
    
    We already place pages to the tail of the freelists when undoing isolation
    via __putback_isolated_page(), let's do it in any case (e.g., if order <=
    pageblock_order) and document the behavior. To simplify, let's move the
    pages to the tail for all move_to_free_list()/move_freepages_block() users.
    
    In 2., the target list is empty, so there should be no change.  In 3., we
    might observe a change, however, highatomic is more concerned about
    allocations succeeding than cache hotness - if we ever realize this change
    degrades a workload, we can special-case this instance and add a proper
    comment.
    
    This change results in all pages getting onlined via online_pages() to be
    placed to the tail of the freelist.
    Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Reviewed-by: default avatarOscar Salvador <osalvador@suse.de>
    Reviewed-by: default avatarWei Yang <richard.weiyang@linux.alibaba.com>
    Acked-by: default avatarPankaj Gupta <pankaj.gupta.linux@gmail.com>
    Acked-by: default avatarMichal Hocko <mhocko@suse.com>
    Cc: Alexander Duyck <alexander.h.duyck@linux.intel.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Mike Rapoport <rppt@kernel.org>
    Cc: Scott Cheloha <cheloha@linux.ibm.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Haiyang Zhang <haiyangz@microsoft.com>
    Cc: "K. Y. Srinivasan" <kys@microsoft.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Stephen Hemminger <sthemmin@microsoft.com>
    Cc: Wei Liu <wei.liu@kernel.org>
    Link: https://lkml.kernel.org/r/20201005121534.15649-4-david@redhat.comSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    293ffa5e
page_alloc.c 244 KB