linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Barry Song <21cnbao@gmail.com>
To: David Stevens <stevensd@google.com>
Cc: Kairui Song <ryncsn@gmail.com>,
	David Rientjes <rientjes@google.com>,
	axelrasmussen@google.com,  linux-mm@kvack.org,
	lsf-pc@lists.linux-foundation.org, weixugc@google.com,
	 yuanchu@google.com
Subject: Re: [LSF/MM/BPF] Improving MGLRU
Date: Fri, 6 Mar 2026 07:40:56 +0800	[thread overview]
Message-ID: <CAGsJ_4zLippMEwD0q3YwDVsBV6_5dvX56mXRGa90ujzi5WQMbQ@mail.gmail.com> (raw)
In-Reply-To: <aam5nOyXs1sNdjTe@google.com>

On Fri, Mar 6, 2026 at 1:13 AM David Stevens <stevensd@google.com> wrote:
>
> On Tue, Mar 03, 2026 at 12:06:20PM +0800, Barry Song wrote:
> > On Mon, Mar 2, 2026 at 7:10 PM Kairui Song <ryncsn@gmail.com> wrote:
> > > On Fri, Feb 27, 2026 at 11:30 AM Barry Song <21cnbao@gmail.com> wrote:
> > > We have an internal workaround for forces aging, and waits for sync
> > > aging if one type of folios are not reclaimable (without the wait, we
> > > still hit the MIN_NR_GEN protect again since aging is not finished).
> > > And without the MIN_NR_GEN protection we might end up over reclaiming
> > > without aging.
> >
> > I see your point—I did exactly the same thing in Android.
> > However, there’s a significant problem. If anon has two
> > generations and files have four, they end up sharing
> > generations. To age anon, we would also need to move file
> > folios between generations; otherwise, the hottest and
> > oldest generations would overlap, causing cold/hot
> > inversion. Furthermore, in inc_min_seq(), moving folios
> > means the oldest generation gets pushed into the second-
> > oldest generation:
> >
> > new_gen = folio_inc_gen(lruvec, folio, false);
> > list_move_tail(&folio->lru, &lrugen->folios[new_gen][type][zone]);
> >
> > This is far from ideal, as it still mixes cold and hot pages
> > to some extent. Could we keep anon and file generations
> > separate instead? I feel this is a strong requirement and
> > likely the first step toward making swappiness work properly.
>
> I did some experiments with splitting anon and file generations on
> ChromeOS a bit over a year ago and got fairly positive results. Although
> shifting personal and team priorities unfortunately prevented me from
> finishing the project. It didn't get to the point where I was confident
> enough in it to send it upstream, but I think it's still worthwhile to
> mention here.
>
> For a bit of background, due to a combination of low-spec hardware and a
> complicated file system structure, many Chromebooks have poor file I/O
> performance. We found that a fairly significant contributor to jank was
> important threads being blocked on .text faults. We tried adjusting
> swappiness but found that MGLRU was unresponsive to such tuning.
> Splitting anon and file into seperate generations and then setting a
> fairly high swappiness value resulted in meaningful jank reductions,
> especially under very high memory pressure. However, there were
> regressions to some workloads that I did not get a chance to try to
> address.
>
> If anyone is interested in seeing the code, it is here [1] in ChromeOS's
> 6.1 kernel. I also have a WIP series posted to Android's 6.12 GKI kernel
> [2], but it hasn't been merged there. This version fixes some issues in
> my original series that were exposed by runing on a very different
> system, in particular around memcgs. However, it hasn't been tested as
> extensively.

Nice! Thanks! Do you still plan to continue working on this and
submit it upstream?

>
> [1] https://chromium.googlesource.com/chromiumos/third_party/kernel/+log/929932351492d01f0aee37a0ac3be8c7bd88f80d
> [2] https://android.googlesource.com/kernel/common/+log/49cd20cfb0da2361be064f7fd70b36867065277a


  reply	other threads:[~2026-03-05 23:41 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-19 17:25 [LSF/MM/BPF TOPIC] " Kairui Song
2026-02-20 18:24 ` Johannes Weiner
2026-02-21  6:03   ` Kairui Song
2026-02-26  1:55 ` Kalesh Singh
2026-02-26  3:06   ` Kairui Song
2026-02-26 10:10     ` wangzicheng
2026-02-26 15:54 ` Matthew Wilcox
2026-02-27  4:31   ` [LSF/MM/BPF] " Barry Song
2026-03-02 17:46     ` Gregory Price
2026-03-05  6:27       ` Barry Song
2026-03-05  7:31         ` Gregory Price
2026-02-27 17:55   ` [LSF/MM/BPF TOPIC] " Shakeel Butt
2026-02-27 18:50     ` Gregory Price
2026-03-03  1:31     ` Axel Rasmussen
2026-03-03 13:39       ` Shakeel Butt
2026-03-05  6:46         ` Chen Ridong
2026-03-03  1:30   ` Axel Rasmussen
2026-02-27  3:30 ` [LSF/MM/BPF] " Barry Song
2026-03-02 11:10   ` Kairui Song
2026-03-03  4:06     ` Barry Song
2026-03-05 17:13       ` David Stevens
2026-03-05 23:40         ` Barry Song [this message]
2026-02-27  7:11 ` [LSF/MM/BPF TOPIC] " David Rientjes
2026-02-27 10:29 ` Vernon Yang
2026-03-02 12:17   ` Kairui Song
  -- strict thread matches above, loose matches on Subject: below --
2026-02-19 17:09 [LSF/MM/BPF] " Kairui Song
2026-02-24 17:19 ` Suren Baghdasaryan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAGsJ_4zLippMEwD0q3YwDVsBV6_5dvX56mXRGa90ujzi5WQMbQ@mail.gmail.com \
    --to=21cnbao@gmail.com \
    --cc=axelrasmussen@google.com \
    --cc=linux-mm@kvack.org \
    --cc=lsf-pc@lists.linux-foundation.org \
    --cc=rientjes@google.com \
    --cc=ryncsn@gmail.com \
    --cc=stevensd@google.com \
    --cc=weixugc@google.com \
    --cc=yuanchu@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox