From: Matthew Wilcox <willy@infradead.org>
To: David Hildenbrand <david@redhat.com>
Cc: linux-mm@kvack.org
Subject: Re: [PATCH 5/6] slab: Allocate frozen pages
Date: Tue, 31 May 2022 18:33:04 +0100 [thread overview]
Message-ID: <YpZRUE4ht2IFO3QW@casper.infradead.org> (raw)
In-Reply-To: <40d658da-6220-e05e-ba0b-d95c82f6bfb3@redhat.com>
On Tue, May 31, 2022 at 07:15:14PM +0200, David Hildenbrand wrote:
> On 31.05.22 17:06, Matthew Wilcox (Oracle) wrote:
> > Since slab does not use the page refcount, it can allocate and
> > free frozen pages, saving one atomic operation per free.
>
> I assume that implies that pages that are actually allocated *from* the
> buddy now have a refcount == 0.
Yes.
> IIRC, page isolation code (e.g., !page_ref_count check in
> has_unmovable_pages()) assumes that any page with a refcount of 0 is
> essentially either already free (buddy) or is on its way of getting
> freed (!buddy).
That would be a bad assumption. We already freeze pages for things like
splitting, migration, and replacement with a THP. If the usage is just
an optimisation, then that's OK (and maybe the optimisation needs to be
tweaked to check PageSlab), but if the code depends on that being true,
it was already broken.
For this particular case, I think has_unmovable_pages() is only called
for ZONE_MOVEABLE and Slab never allocates from ZONE_MOVEABLE, so it's
not an issue?
> There might be other PFN walker code (like compaction) that makes
> similar assumptions that hold for now.
>
> --
> Thanks,
>
> David / dhildenb
>
>
next prev parent reply other threads:[~2022-05-31 17:33 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-31 15:06 [PATCH 0/6] Allocate and free " Matthew Wilcox (Oracle)
2022-05-31 15:06 ` [PATCH 1/6] mm/page_alloc: Remove zone parameter from free_one_page() Matthew Wilcox (Oracle)
2022-05-31 16:59 ` David Hildenbrand
2022-06-01 6:53 ` Miaohe Lin
2022-05-31 15:06 ` [PATCH 2/6] mm/page_alloc: Rename free_the_page() to free_frozen_pages() Matthew Wilcox (Oracle)
2022-05-31 17:02 ` David Hildenbrand
2022-06-01 6:58 ` Miaohe Lin
2022-06-01 12:23 ` Matthew Wilcox
2022-06-02 7:45 ` Miaohe Lin
2022-05-31 15:06 ` [PATCH 3/6] mm/page_alloc: Export free_frozen_pages() instead of free_unref_page() Matthew Wilcox (Oracle)
2022-05-31 17:09 ` David Hildenbrand
2022-05-31 17:11 ` Matthew Wilcox
2022-05-31 15:06 ` [PATCH 4/6] mm/page_alloc: Add alloc_frozen_pages() Matthew Wilcox (Oracle)
2022-05-31 15:06 ` [PATCH 5/6] slab: Allocate frozen pages Matthew Wilcox (Oracle)
2022-05-31 17:15 ` David Hildenbrand
2022-05-31 17:33 ` Matthew Wilcox [this message]
2022-06-01 12:14 ` David Hildenbrand
2022-08-09 10:37 ` Vlastimil Babka (SUSE)
2022-05-31 15:06 ` [PATCH 6/6] slub: " Matthew Wilcox (Oracle)
2022-06-01 3:31 ` [PATCH 0/6] Allocate and free " William Kucharski
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=YpZRUE4ht2IFO3QW@casper.infradead.org \
--to=willy@infradead.org \
--cc=david@redhat.com \
--cc=linux-mm@kvack.org \
/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