[PATCH 0/2] mm: vmscan: fix scan overshoot and ineligible folio scanning

From: Wupeng Ma

Date: Tue Aug 11 2026 - 03:38:29 EST


shrink_lruvec() drives reclaim in SWAP_CLUSTER_MAX (32) chunks, but
isolate_lru_folios() may scan far more than that per call on a single
LRU. The excess is never charged back, so shrink_lruvec() keeps
rescanning the same folios round after round. When reclaim targets a
lower zone, the same scanner also keeps walking zone-ineligible folios
that can never satisfy the allocation, inflating nr_reclaimed into a
false progress that delays the OOM.

This series fixes both:

[1/2] Charge the isolate overshoot against the scan quota so the
next round skips already-scanned folios.
[2/2] Stop scanning once too many zone-ineligible folios have been
skipped, instead of force-isolating them.

Wupeng Ma (2):
mm: vmscan: charge isolate overshoot against scan quota
mm: vmscan: stop scanning ineligible folios after max_nr_skipped

mm/vmscan.c | 48 +++++++++++++++++++++++++++++++++---------------
1 file changed, 33 insertions(+), 15 deletions(-)

--
2.43.0