Re: [PATCH] mm: test page->flags directly in page_lru()

From: Yu Zhao
Date: Wed Feb 24 2021 - 18:51:33 EST


On Wed, Feb 24, 2021 at 10:48:46PM +0000, Matthew Wilcox wrote:
> On Wed, Feb 24, 2021 at 03:34:16PM -0700, Yu Zhao wrote:
> > > If only somebody were working on a patch series to get rid of
> > > all those calls to compound_head()! Some reviews on
> > > https://lore.kernel.org/linux-mm/20210128070404.1922318-2-willy@xxxxxxxxxxxxx/
> > > would be nice.
> >
> > I'm on board with the idea and have done some research in this
> > direction. We've found that the ideal *anon* page size for Chrome OS
> > is not 4KB or 2MB, but 32KB. I hope we could leverage the folio to
> > support flexible anon page size to reduce the number of page faults
> > (vs 4KB) or internal fragmentation (vs 2MB).
> >
> > That being said, it seems to me this is a long term plan and right
> > now we need something smaller. So if you don't mind, I'll just go
> > ahead and remove compound_head() from Page{LRU,Active,Unevictable,
> > SwapBacked} first?
>
> It's really not a big change I'm suggesting here. You need
> https://lore.kernel.org/linux-mm/20210128070404.1922318-2-willy@xxxxxxxxxxxxx/
> https://lore.kernel.org/linux-mm/20210128070404.1922318-5-willy@xxxxxxxxxxxxx/
> https://lore.kernel.org/linux-mm/20210128070404.1922318-8-willy@xxxxxxxxxxxxx/
> and then the patch I sent above to create folio_lru().
>
> Then any changes you want to make to use folios more broadly will
> incrementally move us towards your goal of 32kB anon pages.

Well, these patches introduce a new concept which I'm on board with.
Assume everybody else is too, it still seems to me it's an overkill
to employee folio to just get rid of unnecessary compound_head()
in page_lru() -- this is not a criticism but a compliment.

Let me work out something *conceptually* smaller first, and if you
think folio is absolutely more suitable even for this specific issue,
I'll go review and test the four patches you listed. Sounds good?