mm: vmscan: reduce throttling due to a failure to make progress -fix

Linux Kernel / Linux Kernel - Mel Gorman [techsingularity.net] - 31 December 2021 21:12 UTC

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: 1b4e3f26f9f75 ("mm: vmscan: Reduce throttling due to a failure to make progress")

800829388818 mm: vmscan: reduce throttling due to a failure to make progress -fix
mm/vmscan.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

Upstream: git.kernel.org


  • Share