Re: [PATCH 3/6] mm/mglru: enhance cold/hot inversion handling in inc_min_seq()
From: Barry Song
Date: Wed Aug 26 2026 - 17:45:17 EST
On Wed, Aug 26, 2026 at 4:56 PM Baoquan He <baoquan.he@xxxxxxxxx> wrote:
>
> On 08/21/26 at 06:25pm, Barry Song (Xiaomi) wrote:
> > During aging, a folio's generation may already have been updated by
> > folio_update_gen(), even though it has not yet been moved to the
> > corresponding generation list. Such folios are hotter than those
> > already in that generation.
> >
> > It makes sense for inc_min_seq() to increment the generation of
> > folios that were never promoted during aging and move them to the
> > tail of the new oldest generation. However, folios that were already
> > promoted should instead be moved to the head of their updated
> > generation, just as sort_folio() does in scan_folios().
>
> While sort_folio() move protected folio to the head of next gen too.
> It only moves ineligible folios to the tail of next gen.
>
Hi Baoquan,
Thanks for the review! I’m not quite sure I understand what you mean :-)
Could you please clarify what you’re suggesting?
I can explain the design in more detail.
Yes. For both promoted and protected folios, `sort_folio()` moves them
to the head of the corresponding generation.
Here, `inc_min_seq()` is a bit different. We are overlapping `max_seq`
and `min_seq`, so the `min_seq` generation should be moved to the
second-oldest generation. Therefore, I think non-promoted folios should
be placed at the tail.
They are genuinely not promoted, so they shouldn't be at the head.
For example, suppose we have the following folios:
Second-oldest gen: f1, f2, f3, f4
Oldest gen: f5 (promoted), f6 (not promoted),
f7 (promoted), f8 (not promoted)
Without my patchset, the result is:
Second-oldest:
f1, f2, f3, f4, f8 (promoted), f7 (not promoted),
f6 (not promoted), f5 (promoted)
So you can see that both promoted and non-promoted folios are at the tail
of the second-oldest generation?
With my patchset, the result is:
Second-oldest:
f5 (promoted), f8 (promoted), f1, f2, f3, f4,
f7 (not promoted), f6 (not promoted)
Best Regards
Barry