• Kirill A. Shutemov's avatar
    mm: fix endless reclaim on machines with unaccepted memory · 807174a9
    Kirill A. Shutemov authored
    Unaccepted memory is considered unusable free memory, which is not counted
    as free on the zone watermark check.  This causes get_page_from_freelist()
    to accept more memory to hit the high watermark, but it creates problems
    in the reclaim path.
    
    The reclaim path encounters a failed zone watermark check and attempts to
    reclaim memory.  This is usually successful, but if there is little or no
    reclaimable memory, it can result in endless reclaim with little to no
    progress.  This can occur early in the boot process, just after start of
    the init process when the only reclaimable memory is the page cache of the
    init executable and its libraries.
    
    Make unaccepted memory free from watermark check point of view.  This way
    unaccepted memory will never be the trigger of memory reclaim.  Accept
    more memory in the get_page_from_freelist() if needed.
    
    Link: https://lkml.kernel.org/r/20240809114854.3745464-2-kirill.shutemov@linux.intel.com
    Fixes: dcdfdd40 ("mm: Add support for unaccepted memory")
    Signed-off-by: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Reported-by: default avatarJianxiong Gao <jxgao@google.com>
    Acked-by: default avatarDavid Hildenbrand <david@redhat.com>
    Tested-by: default avatarJianxiong Gao <jxgao@google.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Mike Rapoport (Microsoft) <rppt@kernel.org>
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: <stable@vger.kernel.org>	[6.5+]
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    807174a9
page_alloc.c 195 KB