[LSF/MM/BPF TOPIC] State Of The Page

Matthew Wilcox willy at infradead.org
Wed Mar 1 20:03:53 PST 2023


On Wed, Mar 01, 2023 at 10:50:24PM -0500, Pasha Tatashin wrote:
> On Tue, Feb 21, 2023 at 2:58 PM Matthew Wilcox <willy at infradead.org> wrote:
> > My goal for 2023 is to get to a point where we (a) have struct page
> > reduced to:
> >
> > struct page {
> >         unsigned long flags;
> >         struct list_head lru;
> >         struct address_space *mapping;
> >         pgoff_t index;
> >         unsigned long private;
> >         atomic_t _mapcount;
> >         atomic_t _refcount;
> >         unsigned long memcg_data;
> > #ifdef LAST_CPUPID_NOT_IN_PAGE_FLAGS
> >         int _last_cpupid;
> > #endif
> > };
> 
> This looks clean, but it is still 64-bytes. I wonder if we could
> potentially reduce it down to 56 bytes by removing memcg_data.

We need struct page to be 16-byte aligned to make slab work.  We also need
it to divide PAGE_SIZE evenly to make CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP
work.  I don't think it's worth nibbling around the edges like this
anyway; convert everything from page to folio and then we can do the
big bang conversion where struct page shrinks from 64 bytes to 8.



More information about the Linux-nvme mailing list