On Wed, Feb 24, 2021 at 04:50:39PM -0700, Yu Zhao wrote: > 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. It's not really a new concept ... it's a new type for an existing concept (a head page). > 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. It's not overkill, that really is the point of a folio! If you think about it, only head pages can be on the LRU list (because the compound_head is in the union with the lru list_head). So it always makes sense to talk about folios on the LRU list. > 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? Umm. It seems to me that no matter what you do, it'll be equivalent to this, only without the type-safety?