• Mel Gorman's avatar
    mm: do not boost watermarks to avoid fragmentation for the DISCONTIG memory model · 24512228
    Mel Gorman authored
    Mikulas Patocka reported that commit 1c30844d ("mm: reclaim small
    amounts of memory when an external fragmentation event occurs") "broke"
    memory management on parisc.
    
    The machine is not NUMA but the DISCONTIG model creates three pgdats
    even though it's a UMA machine for the following ranges
    
            0) Start 0x0000000000000000 End 0x000000003fffffff Size   1024 MB
            1) Start 0x0000000100000000 End 0x00000001bfdfffff Size   3070 MB
            2) Start 0x0000004040000000 End 0x00000040ffffffff Size   3072 MB
    
    Mikulas reported:
    
    	With the patch 1c30844d, the kernel will incorrectly reclaim the
    	first zone when it fills up, ignoring the fact that there are two
    	completely free zones. Basiscally, it limits cache size to 1GiB.
    
    	For example, if I run:
    	# dd if=/dev/sda of=/dev/null bs=1M count=2048
    
    	- with the proper kernel, there should be "Buffers - 2GiB"
    	when this command finishes. With the patch 1c30844d, buffers
    	will consume just 1GiB or slightly more, because the kernel was
    	incorrectly reclaiming them.
    
    The page allocator and reclaim makes assumptions that pgdats really
    represent NUMA nodes and zones represent ranges and makes decisions on
    that basis.  Watermark boosting for small pgdats leads to unexpected
    results even though this would have behaved reasonably on SPARSEMEM.
    
    DISCONTIG is essentially deprecated and even parisc plans to move to
    SPARSEMEM so there is no need to be fancy, this patch simply disables
    watermark boosting by default on DISCONTIGMEM.
    
    Link: http://lkml.kernel.org/r/20190419094335.GJ18914@techsingularity.net
    Fixes: 1c30844d ("mm: reclaim small amounts of memory when an external fragmentation event occurs")
    Signed-off-by: default avatarMel Gorman <mgorman@techsingularity.net>
    Reported-by: default avatarMikulas Patocka <mpatocka@redhat.com>
    Tested-by: default avatarMikulas Patocka <mpatocka@redhat.com>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Cc: James Bottomley <James.Bottomley@hansenpartnership.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    24512228
page_alloc.c 233 KB