• Mel Gorman's avatar
    mm: vmscan: reduce throttling due to a failure to make progress -fix · 80082938
    Mel Gorman authored
    Hugh Dickins reported the following
    
    	My tmpfs swapping load (tweaked to use huge pages more heavily
    	than in real life) is far from being a realistic load: but it was
    	notably slowed down by your throttling mods in 5.16-rc, and this
    	patch makes it well again - thanks.
    
    	But: it very quickly hit NULL pointer until I changed that last
    	line to
    
            if (first_pgdat)
                    consider_reclaim_throttle(first_pgdat, sc);
    
    The likely issue is that huge pages are a major component of the test
    workload.  When this is the case, first_pgdat may never get set if
    compaction is ready to continue due to this check
    
            if (IS_ENABLED(CONFIG_COMPACTION) &&
                sc->order > PAGE_ALLOC_COSTLY_ORDER &&
                compaction_ready(zone, sc)) {
                    sc->compaction_ready = true;
                    continue;
            }
    
    If this was true for every zone in the zonelist, first_pgdat would never
    get set resulting in a NULL pointer exception.
    
    Link: https://lkml.kernel.org/r/20211209095453.GM3366@techsingularity.net
    Fixes: 1b4e3f26 ("mm: vmscan: Reduce throttling due to a failure to make progress")
    Signed-off-by: default avatarMel Gorman <mgorman@techsingularity.net>
    Reported-by: default avatarHugh Dickins <hughd@google.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Rik van Riel <riel@surriel.com>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Darrick J. Wong <djwong@kernel.org>
    Cc: Shakeel Butt <shakeelb@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    80082938
vmscan.c 139 KB