LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Kent Overstreet <email@example.com> To: Vlastimil Babka <firstname.lastname@example.org> Cc: Matthew Wilcox <email@example.com>, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, Johannes Weiner <email@example.com>, Linus Torvalds <firstname.lastname@example.org>, Andrew Morton <email@example.com>, "Darrick J. Wong" <firstname.lastname@example.org>, Christoph Hellwig <email@example.com>, David Howells <firstname.lastname@example.org> Subject: Re: Struct page proposal Date: Mon, 27 Sep 2021 16:14:06 -0400 [thread overview] Message-ID: <YVImDtfdgo+RXBeemail@example.com> (raw) In-Reply-To: <firstname.lastname@example.org> On Mon, Sep 27, 2021 at 09:07:21PM +0200, Vlastimil Babka wrote: > On 9/27/2021 8:09 PM, Kent Overstreet wrote: > > On Mon, Sep 27, 2021 at 07:05:26PM +0100, Matthew Wilcox wrote: > >> On Mon, Sep 27, 2021 at 07:48:15PM +0200, Vlastimil Babka wrote: > >>> Won't be easy to cram all that into two unsigned long's, or even a single > >>> one. We should avoid storing anything in the free page itself. Allocating > >>> some external structures to track free pages is going to have funny > >>> bootstrap problems. Probably a major redesign would be needed... > >> > >> Wait, why do we want to avoid using the memory that we're allocating? > > > > The issue is where to stick the state for free pages. If that doesn't fit in two > > ulongs, then we'd need a separate allocation, which means slab needs to be up > > and running before free pages are initialized. > > So that's what I meant by the funny bootstrap problems - slab allocates pages > from the buddy allocator. And well, not just bootstrap, imagine free memory > becomes low, we need to reclaim pages, and in order to turn full pages to free > buddy pages we need to allocate these slab structures, and the slab is full too > and needs to allocate more backing pages... > > By "major redesign" I meant e.g. something along - bitmaps of free pages per > each order? (instead of the free lists) Hm but I guess no, the worst case times > searching for free pages would just suck... We can have arrays of pointers to free pages - then within struct page we'd keep the index of that page in the freelist array. To take a page off the middle of the freelist we'd just swap it with the one at the end. And instead of using a literal array, we'd want to use a simple radix tree.
next prev parent reply other threads:[~2021-09-27 20:14 UTC|newest] Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-09-23 1:21 Struct page proposal Kent Overstreet 2021-09-23 3:23 ` Matthew Wilcox 2021-09-23 5:15 ` Kent Overstreet 2021-09-23 11:40 ` Mapcount of subpages Matthew Wilcox 2021-09-23 12:45 ` Kirill A. Shutemov 2021-09-23 21:10 ` Hugh Dickins 2021-09-23 21:54 ` Yang Shi 2021-09-23 22:23 ` Zi Yan 2021-09-23 23:48 ` Hugh Dickins 2021-09-24 0:25 ` Zi Yan 2021-09-24 0:57 ` Hugh Dickins 2021-09-24 1:11 ` Yang Shi 2021-09-24 1:31 ` Matthew Wilcox 2021-09-24 3:26 ` Yang Shi 2021-09-24 23:05 ` Kirill A. Shutemov 2021-09-23 18:56 ` Mike Kravetz 2021-09-23 9:03 ` Struct page proposal David Hildenbrand 2021-09-23 15:22 ` Kent Overstreet 2021-09-23 15:34 ` David Hildenbrand 2021-09-27 17:48 ` Vlastimil Babka 2021-09-27 17:53 ` Kent Overstreet 2021-09-27 18:34 ` Linus Torvalds 2021-09-27 20:45 ` David Hildenbrand 2021-09-27 18:05 ` Matthew Wilcox 2021-09-27 18:09 ` Kent Overstreet 2021-09-27 18:12 ` Matthew Wilcox 2021-09-27 18:16 ` David Hildenbrand 2021-09-27 18:53 ` Vlastimil Babka 2021-09-27 19:04 ` Linus Torvalds 2021-09-27 18:16 ` Kent Overstreet 2021-09-28 3:19 ` Matthew Wilcox 2021-09-27 19:07 ` Vlastimil Babka 2021-09-27 20:14 ` Kent Overstreet [this message] 2021-09-28 11:21 ` David Laight 2021-09-27 18:33 ` Kirill A. Shutemov
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=YVImDtfdgo+RXBeemail@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.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: linkBe 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; as well as URLs for NNTP newsgroup(s).