mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 0/2] mm: vmscan: fix scan overshoot and ineligible folio scanning
@ 2026-08-11  7:08 Wupeng Ma
  2026-08-11  7:08 ` [PATCH 1/2] mm: vmscan: charge isolate overshoot against scan quota Wupeng Ma
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Wupeng Ma @ 2026-08-11  7:08 UTC (permalink / raw)
  To: akpm, liuye, hannes, mhocko, david, ljs, hughd, mgorman, yang
  Cc: zhangqiuhao, wangkefeng.wang, linux-mm, linux-kernel, Wupeng Ma

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


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/2] mm: vmscan: charge isolate overshoot against scan quota
  2026-08-11  7:08 [PATCH 0/2] mm: vmscan: fix scan overshoot and ineligible folio scanning Wupeng Ma
@ 2026-08-11  7:08 ` Wupeng Ma
  2026-08-11  7:08 ` [PATCH 2/2] mm: vmscan: stop scanning ineligible folios after max_nr_skipped Wupeng Ma
  2026-08-12  1:42 ` [PATCH 0/2] mm: vmscan: fix scan overshoot and ineligible folio scanning Andrew Morton
  2 siblings, 0 replies; 7+ messages in thread
From: Wupeng Ma @ 2026-08-11  7:08 UTC (permalink / raw)
  To: akpm, liuye, hannes, mhocko, david, ljs, hughd, mgorman, yang
  Cc: zhangqiuhao, wangkefeng.wang, linux-mm, linux-kernel, Wupeng Ma

shrink_lruvec() charges the per-LRU budget nr[lru] in SWAP_CLUSTER_MAX
(32) chunks, but isolate_lru_folios() may scan far more per call: a
large folio can jump scan by many pages at once (a PMD-sized folio
counts 512), and a zone-ineligible LRU walks the whole list without
feeding scan back.  The overshoot is never refunded, so shrink_lruvec()
keeps charging only 32 per round and rescans the same folios.

Have isolate_lru_folios() record its scanned count in sc->nr_isolate_scanned
and let shrink_lruvec() subtract the overshoot from the remaining quota so
the next round skips already-scanned folios.  The field is reset to 0
before each shrink_list() call, as shrink_list() only reaches
isolate_lru_folios() on some paths (active + skipped_deactivate,
too_many_isolated stall bail out early); a stale value would otherwise
be charged.  The budget floor stays nr_to_scan via max() so an empty
LRU (sc->nr_isolate_scanned = 0) still advances and cannot deadlock.

Co-developed-by: Qiuhao Zhang <zhangqiuhao@huawei.com>
Signed-off-by: Qiuhao Zhang <zhangqiuhao@huawei.com>
Signed-off-by: Wupeng Ma <mawupeng1@huawei.com>
---
 mm/vmscan.c | 32 +++++++++++++++++++++-----------
 1 file changed, 21 insertions(+), 11 deletions(-)

diff --git a/mm/vmscan.c b/mm/vmscan.c
index 56708d1d2dfd5..147e74f9732d5 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -164,6 +164,9 @@ struct scan_control {
 	/* Incremented by the number of inactive pages that were scanned */
 	unsigned long nr_scanned;
 
+	/* Number of pages that were scanned from isolate_lru_folios() */
+	unsigned long nr_isolate_scanned;
+
 	/* Number of pages freed so far during a call to shrink_zones() */
 	unsigned long nr_reclaimed;
 
@@ -1673,7 +1676,6 @@ static __always_inline void update_lru_sizes(struct lruvec *lruvec,
  * @nr_to_scan:	The number of eligible pages to look through on the list.
  * @lruvec:	The LRU vector to pull pages from.
  * @dst:	The temp list to put pages on to.
- * @nr_scanned:	The number of pages that were scanned.
  * @sc:		The scan_control struct for this reclaim session
  * @lru:	LRU list id for isolating
  *
@@ -1681,8 +1683,7 @@ static __always_inline void update_lru_sizes(struct lruvec *lruvec,
  */
 static unsigned long isolate_lru_folios(unsigned long nr_to_scan,
 		struct lruvec *lruvec, struct list_head *dst,
-		unsigned long *nr_scanned, struct scan_control *sc,
-		enum lru_list lru)
+		struct scan_control *sc, enum lru_list lru)
 {
 	struct list_head *src = &lruvec->lists[lru];
 	unsigned long nr_taken = 0;
@@ -1766,7 +1767,7 @@ static unsigned long isolate_lru_folios(unsigned long nr_to_scan,
 			skipped += nr_skipped[zid];
 		}
 	}
-	*nr_scanned = total_scan;
+	sc->nr_isolate_scanned = total_scan;
 	trace_mm_vmscan_lru_isolate(sc->reclaim_idx, sc->order, nr_to_scan,
 				    total_scan, skipped, nr_taken, lru);
 	update_lru_sizes(lruvec, lru, nr_zone_taken);
@@ -2014,8 +2015,8 @@ static unsigned long shrink_inactive_list(unsigned long nr_to_scan,
 
 	lruvec_lock_irq(lruvec);
 
-	nr_taken = isolate_lru_folios(nr_to_scan, lruvec, &folio_list,
-				     &nr_scanned, sc, lru);
+	nr_taken = isolate_lru_folios(nr_to_scan, lruvec, &folio_list, sc, lru);
+	nr_scanned = sc->nr_isolate_scanned;
 
 	__mod_node_page_state(pgdat, NR_ISOLATED_ANON + file, nr_taken);
 	item = PGSCAN_KSWAPD + reclaimer_offset(sc);
@@ -2071,7 +2072,6 @@ static void shrink_active_list(unsigned long nr_to_scan,
 			       enum lru_list lru)
 {
 	unsigned long nr_taken;
-	unsigned long nr_scanned;
 	vm_flags_t vm_flags;
 	LIST_HEAD(l_hold);	/* The folios which were snipped off */
 	LIST_HEAD(l_active);
@@ -2085,12 +2085,11 @@ static void shrink_active_list(unsigned long nr_to_scan,
 
 	lruvec_lock_irq(lruvec);
 
-	nr_taken = isolate_lru_folios(nr_to_scan, lruvec, &l_hold,
-				     &nr_scanned, sc, lru);
+	nr_taken = isolate_lru_folios(nr_to_scan, lruvec, &l_hold, sc, lru);
 
 	__mod_node_page_state(pgdat, NR_ISOLATED_ANON + file, nr_taken);
 
-	mod_lruvec_state(lruvec, PGREFILL, nr_scanned);
+	mod_lruvec_state(lruvec, PGREFILL, sc->nr_isolate_scanned);
 
 	lruvec_unlock_irq(lruvec);
 
@@ -5920,10 +5919,21 @@ static void shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc)
 		for_each_evictable_lru(lru) {
 			if (nr[lru]) {
 				nr_to_scan = min(nr[lru], SWAP_CLUSTER_MAX);
-				nr[lru] -= nr_to_scan;
 
+				sc->nr_isolate_scanned = 0;
 				nr_reclaimed += shrink_list(lru, nr_to_scan,
 							    lruvec, sc);
+				/*
+				 * isolate_lru_folios() may scan far more
+				 * than nr_to_scan when the LRU holds
+				 * ineligible folios (zone-skip) or large
+				 * folios. Charge that overshoot against the
+				 * remaining quota (clamped by min() so it
+				 * cannot go negative) so the next iteration
+				 * does not rescan the same skipped folios.
+				 */
+				nr[lru] -= min(nr[lru],
+					       max(nr_to_scan, sc->nr_isolate_scanned));
 			}
 		}
 
-- 
2.43.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 2/2] mm: vmscan: stop scanning ineligible folios after max_nr_skipped
  2026-08-11  7:08 [PATCH 0/2] mm: vmscan: fix scan overshoot and ineligible folio scanning Wupeng Ma
  2026-08-11  7:08 ` [PATCH 1/2] mm: vmscan: charge isolate overshoot against scan quota Wupeng Ma
@ 2026-08-11  7:08 ` Wupeng Ma
  2026-08-12  1:42 ` [PATCH 0/2] mm: vmscan: fix scan overshoot and ineligible folio scanning Andrew Morton
  2 siblings, 0 replies; 7+ messages in thread
From: Wupeng Ma @ 2026-08-11  7:08 UTC (permalink / raw)
  To: akpm, liuye, hannes, mhocko, david, ljs, hughd, mgorman, yang
  Cc: zhangqiuhao, wangkefeng.wang, linux-mm, linux-kernel, Wupeng Ma

When reclaiming for a lower zone, isolate_lru_folios() accounts folios
from higher zones as skipped and, once max_nr_skipped hits
SWAP_CLUSTER_MAX_SKIPPED, force-isolates the remaining ineligible folios
to keep the loop from spinning on the skipped ones.  Those folios are
reclaimed even though they can never satisfy the current allocation, so
nr_reclaimed is inflated into a false progress that keeps resetting
no_progress_loops in should_reclaim_retry() and delays the OOM.

Stop scanning once max_nr_skipped is reached instead of force-isolating
the ineligible folios.  The skipped folios are already accounted in
total_scan, so shrink_lruvec() can charge the overshoot against its scan
budget (see the previous commit) and will not rescan them.

Fixes: 1c7b17cf0594 ("mm/vmscan: fix hard LOCKUP in function isolate_lru_folios")
Signed-off-by: Wupeng Ma <mawupeng1@huawei.com>
---
 mm/vmscan.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/mm/vmscan.c b/mm/vmscan.c
index 147e74f9732d5..ac3237a58cb29 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1704,12 +1704,20 @@ static unsigned long isolate_lru_folios(unsigned long nr_to_scan,
 		nr_pages = folio_nr_pages(folio);
 		total_scan += nr_pages;
 
-		/* Using max_nr_skipped to prevent hard LOCKUP*/
-		if (max_nr_skipped < SWAP_CLUSTER_MAX_SKIPPED &&
-		    (folio_zonenum(folio) > sc->reclaim_idx)) {
+		/*
+		 * Using max_nr_skipped to prevent hard LOCKUP.
+		 * Once the cap is hit, stop rather than force-isolating:
+		 * reclaiming ineligible folios only inflates nr_reclaimed
+		 * into a false progress.
+		 */
+		if (folio_zonenum(folio) > sc->reclaim_idx) {
 			nr_skipped[folio_zonenum(folio)] += nr_pages;
-			move_to = &folios_skipped;
 			max_nr_skipped++;
+			if (max_nr_skipped >= SWAP_CLUSTER_MAX_SKIPPED) {
+				list_move(&folio->lru, &folios_skipped);
+				break;
+			}
+			move_to = &folios_skipped;
 			goto move;
 		}
 
-- 
2.43.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/2] mm: vmscan: fix scan overshoot and ineligible folio scanning
  2026-08-11  7:08 [PATCH 0/2] mm: vmscan: fix scan overshoot and ineligible folio scanning Wupeng Ma
  2026-08-11  7:08 ` [PATCH 1/2] mm: vmscan: charge isolate overshoot against scan quota Wupeng Ma
  2026-08-11  7:08 ` [PATCH 2/2] mm: vmscan: stop scanning ineligible folios after max_nr_skipped Wupeng Ma
@ 2026-08-12  1:42 ` Andrew Morton
  2026-08-12  2:29   ` mawupeng
  2 siblings, 1 reply; 7+ messages in thread
From: Andrew Morton @ 2026-08-12  1:42 UTC (permalink / raw)
  To: Wupeng Ma
  Cc: liuye, hannes, mhocko, david, ljs, hughd, mgorman, yang,
	zhangqiuhao, wangkefeng.wang, linux-mm, linux-kernel

On Tue, 11 Aug 2026 15:08:47 +0800 Wupeng Ma <mawupeng1@huawei.com> wrote:

> 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.

This all sounds fairly bad.  Is there some report?  Real-world test
results?  Laboratory test results?  Something to help us understand the
impact of the issues and the situations in which they occur.

Thanks.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/2] mm: vmscan: fix scan overshoot and ineligible folio scanning
  2026-08-12  1:42 ` [PATCH 0/2] mm: vmscan: fix scan overshoot and ineligible folio scanning Andrew Morton
@ 2026-08-12  2:29   ` mawupeng
  2026-08-25  0:59     ` mawupeng
  0 siblings, 1 reply; 7+ messages in thread
From: mawupeng @ 2026-08-12  2:29 UTC (permalink / raw)
  To: akpm
  Cc: mawupeng1, liuye, hannes, mhocko, david, ljs, hughd, mgorman,
	yang, zhangqiuhao, wangkefeng.wang, linux-mm, linux-kernel



On 周三 2026-8-12 09:42, Andrew Morton wrote:
> On Tue, 11 Aug 2026 15:08:47 +0800 Wupeng Ma <mawupeng1@huawei.com> wrote:
> 
>> 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.
> 
> This all sounds fairly bad.  Is there some report?  Real-world test
> results?  Laboratory test results?  Something to help us understand the
> impact of the issues and the situations in which they occur.
> 

Sorry — this background belongs in the cover letter and I left it
out.  Adding it here.

## Situation

We observed slow, unexpected OOM behavior during extreme stress testing,
and while digging into the reclaim code during that analysis we spotted
these latent risks in isolate_lru_folios() — the overshoot never
being charged back, and the force-isolate path on lower-zone reclaim.
The concerns below are the ones surfaced from reading the code, then
confirmed by constructing the situation deliberately.

The problem only appears when reclaim targets a lower zone while the
LRU holds folios from a higher zone:

  - reclaim_idx points at DMA32/DMA (the triggering allocation asked
    for a lower zone, e.g. __GFP_DMA32), and
  - the LRU holds folios from a higher zone (Normal/Movable).

Normal userspace allocations go to the highest zone, so reclaim_idx
never points below it and the zone-skip branch is never taken.  It
needs a real lower-zone allocator to drain that zone below watermark;
that is also why it went unnoticed upstream — the 1c7b17cf hard-lockup
fix that introduced the force-isolate path was found only on a ~1 TB
box running DMA32 module allocations.

## Impact

Reproduced on x86 QEMU, 7.2-rc6, with a kernel module doing
__GFP_DMA32 allocations to drain DMA32 below watermark (LRU folios
sit in Movable):

  - A single isolate_lru_folios() call scanned 32794 pages and took
    25 (32769 skipped): 99.9% wasted on ineligible folios.
  - Across one run, isolate was called 339 times, 140-165 of which
    isolated nothing (taken=0, pure empty scans).
  - shrink_lruvec() charges only the 32-page quota per round and
    never refunds the overshoot, so the same skipped folios are
    rescanned round after round.  vmstat on a memcg OOM path:
    Δpgscan_direct / Δpgsteal_direct = 2836624 / 112719 = 25.2x
    (isolate -> shrink_folio_list returns the folio -> isolate again).

Once max_nr_skipped hits SWAP_CLUSTER_MAX_SKIPPED, the current code
force-isolates the remaining ineligible folios.  On the inactive LRU
they reach shrink_folio_list() and get reclaimed though they can
never satisfy the allocation, inflating nr_reclaimed and resetting
no_progress_loops in should_reclaim_retry(), delaying the OOM.

## A/B results (same .config, md5-identical)

| metric                  | baseline   | patched | note |
|-------------------------|------------|---------|------|
| empty scans (taken=0)   | 140-165    | 0       | stable across runs |
| isolate calls           | 339        | 7       | 48x fewer |
| total pages scanned     | 343711     | 3140    | 109x fewer |
| single-call max scan    | 32794      | 3104    | |

Empty-scan 0 is the stable evidence (holds every run).  The
Δpgscan/Δpgsteal ratio is volatile (baseline 56-26675x, patched
65-1324x, ranges overlap) and is not relied on alone.

## Caveats and reproduction

  - Triggering needs a lower-zone-pressured box.  To confirm the code
    analysis, the situation was constructed on a small x86 QEMU VM
    (1500M, CONFIG_LRU_GEN=n) with kernel cmdline
    `movable_zone=DMA32 kernelcore=256M` (DMA32 small, Normal empty,
    Movable large), then a kernel module doing
    `alloc_page(GFP_DMA32)` drains DMA32 below watermark.  LRU folios
    sit in Movable and are zone-skipped while reclaiming for DMA32.
    Observed via the `mm_vmscan_lru_isolate` tracepoint and
    /proc/vmstat (pgscan_direct, pgsteal_direct).

> Thanks.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/2] mm: vmscan: fix scan overshoot and ineligible folio scanning
  2026-08-12  2:29   ` mawupeng
@ 2026-08-25  0:59     ` mawupeng
  2026-08-30  3:18       ` Andrew Morton
  0 siblings, 1 reply; 7+ messages in thread
From: mawupeng @ 2026-08-25  0:59 UTC (permalink / raw)
  To: akpm
  Cc: mawupeng1, liuye, hannes, mhocko, david, ljs, hughd, mgorman,
	yang, zhangqiuhao, wangkefeng.wang, linux-mm, linux-kernel

Hi, maintainers
  Kindly ping.

On 周三 2026-8-12 10:29, mawupeng wrote:
> 
> 
> On 周三 2026-8-12 09:42, Andrew Morton wrote:
>> On Tue, 11 Aug 2026 15:08:47 +0800 Wupeng Ma <mawupeng1@huawei.com> wrote:
>>
>>> 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.
>>
>> This all sounds fairly bad.  Is there some report?  Real-world test
>> results?  Laboratory test results?  Something to help us understand the
>> impact of the issues and the situations in which they occur.
>>
> 
> Sorry — this background belongs in the cover letter and I left it
> out.  Adding it here.
> 
> ## Situation
> 
> We observed slow, unexpected OOM behavior during extreme stress testing,
> and while digging into the reclaim code during that analysis we spotted
> these latent risks in isolate_lru_folios() — the overshoot never
> being charged back, and the force-isolate path on lower-zone reclaim.
> The concerns below are the ones surfaced from reading the code, then
> confirmed by constructing the situation deliberately.
> 
> The problem only appears when reclaim targets a lower zone while the
> LRU holds folios from a higher zone:
> 
>   - reclaim_idx points at DMA32/DMA (the triggering allocation asked
>     for a lower zone, e.g. __GFP_DMA32), and
>   - the LRU holds folios from a higher zone (Normal/Movable).
> 
> Normal userspace allocations go to the highest zone, so reclaim_idx
> never points below it and the zone-skip branch is never taken.  It
> needs a real lower-zone allocator to drain that zone below watermark;
> that is also why it went unnoticed upstream — the 1c7b17cf hard-lockup
> fix that introduced the force-isolate path was found only on a ~1 TB
> box running DMA32 module allocations.
> 
> ## Impact
> 
> Reproduced on x86 QEMU, 7.2-rc6, with a kernel module doing
> __GFP_DMA32 allocations to drain DMA32 below watermark (LRU folios
> sit in Movable):
> 
>   - A single isolate_lru_folios() call scanned 32794 pages and took
>     25 (32769 skipped): 99.9% wasted on ineligible folios.
>   - Across one run, isolate was called 339 times, 140-165 of which
>     isolated nothing (taken=0, pure empty scans).
>   - shrink_lruvec() charges only the 32-page quota per round and
>     never refunds the overshoot, so the same skipped folios are
>     rescanned round after round.  vmstat on a memcg OOM path:
>     Δpgscan_direct / Δpgsteal_direct = 2836624 / 112719 = 25.2x
>     (isolate -> shrink_folio_list returns the folio -> isolate again).
> 
> Once max_nr_skipped hits SWAP_CLUSTER_MAX_SKIPPED, the current code
> force-isolates the remaining ineligible folios.  On the inactive LRU
> they reach shrink_folio_list() and get reclaimed though they can
> never satisfy the allocation, inflating nr_reclaimed and resetting
> no_progress_loops in should_reclaim_retry(), delaying the OOM.
> 
> ## A/B results (same .config, md5-identical)
> 
> | metric                  | baseline   | patched | note |
> |-------------------------|------------|---------|------|
> | empty scans (taken=0)   | 140-165    | 0       | stable across runs |
> | isolate calls           | 339        | 7       | 48x fewer |
> | total pages scanned     | 343711     | 3140    | 109x fewer |
> | single-call max scan    | 32794      | 3104    | |
> 
> Empty-scan 0 is the stable evidence (holds every run).  The
> Δpgscan/Δpgsteal ratio is volatile (baseline 56-26675x, patched
> 65-1324x, ranges overlap) and is not relied on alone.
> 
> ## Caveats and reproduction
> 
>   - Triggering needs a lower-zone-pressured box.  To confirm the code
>     analysis, the situation was constructed on a small x86 QEMU VM
>     (1500M, CONFIG_LRU_GEN=n) with kernel cmdline
>     `movable_zone=DMA32 kernelcore=256M` (DMA32 small, Normal empty,
>     Movable large), then a kernel module doing
>     `alloc_page(GFP_DMA32)` drains DMA32 below watermark.  LRU folios
>     sit in Movable and are zone-skipped while reclaiming for DMA32.
>     Observed via the `mm_vmscan_lru_isolate` tracepoint and
>     /proc/vmstat (pgscan_direct, pgsteal_direct).
> 
>> Thanks.
> 


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/2] mm: vmscan: fix scan overshoot and ineligible folio scanning
  2026-08-25  0:59     ` mawupeng
@ 2026-08-30  3:18       ` Andrew Morton
  0 siblings, 0 replies; 7+ messages in thread
From: Andrew Morton @ 2026-08-30  3:18 UTC (permalink / raw)
  To: mawupeng
  Cc: liuye, hannes, mhocko, david, ljs, hughd, mgorman, yang,
	zhangqiuhao, wangkefeng.wang, linux-mm, linux-kernel

On Tue, 25 Aug 2026 08:59:54 +0800 mawupeng <mawupeng1@huawei.com> wrote:

> Hi, maintainers
>   Kindly ping.

It's been quite a while.  It would be helpful to refresh/retest/resend,
please.

While doing this, please update the changelogging to help reviewers
understand the end-user impact of the issue.

Please also give some though to whether we should backport these fixes
into earlier kernels, with a cc:stable.  Given the unusual
circumstances which are required to hit this, I'm thinking "no", but
feel free to disagree!


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-08-30  3:18 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-11  7:08 [PATCH 0/2] mm: vmscan: fix scan overshoot and ineligible folio scanning Wupeng Ma
2026-08-11  7:08 ` [PATCH 1/2] mm: vmscan: charge isolate overshoot against scan quota Wupeng Ma
2026-08-11  7:08 ` [PATCH 2/2] mm: vmscan: stop scanning ineligible folios after max_nr_skipped Wupeng Ma
2026-08-12  1:42 ` [PATCH 0/2] mm: vmscan: fix scan overshoot and ineligible folio scanning Andrew Morton
2026-08-12  2:29   ` mawupeng
2026-08-25  0:59     ` mawupeng
2026-08-30  3:18       ` Andrew Morton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®