From: David Hildenbrand <david@redhat.com>
To: Nikita Kalyazin <kalyazin@amazon.com>,
willy@infradead.org, pbonzini@redhat.com,
linux-fsdevel@vger.kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, kvm@vger.kernel.org
Cc: michael.day@amd.com, jthoughton@google.com, michael.roth@amd.com,
ackerleytng@google.com, graf@amazon.de, jgowans@amazon.com,
roypat@amazon.co.uk, derekmn@amazon.com, nsaenz@amazon.es,
xmarcalx@amazon.com
Subject: Re: [RFC PATCH 0/2] mm: filemap: add filemap_grab_folios
Date: Fri, 10 Jan 2025 18:01:16 +0100 [thread overview]
Message-ID: <5608af05-0b7a-4e11-b381-8b57b701e316@redhat.com> (raw)
In-Reply-To: <20250110154659.95464-1-kalyazin@amazon.com>
On 10.01.25 16:46, Nikita Kalyazin wrote:
> Based on David's suggestion for speeding up guest_memfd memory
> population [1] made at the guest_memfd upstream call on 5 Dec 2024 [2],
> this adds `filemap_grab_folios` that grabs multiple folios at a time.
>
Hi,
> Motivation
>
> When profiling guest_memfd population and comparing the results with
> population of anonymous memory via UFFDIO_COPY, I observed that the
> former was up to 20% slower, mainly due to adding newly allocated pages
> to the pagecache. As far as I can see, the two main contributors to it
> are pagecache locking and tree traversals needed for every folio. The
> RFC attempts to partially mitigate those by adding multiple folios at a
> time to the pagecache.
>
> Testing
>
> With the change applied, I was able to observe a 10.3% (708 to 635 ms)
> speedup in a selftest that populated 3GiB guest_memfd and a 9.5% (990 to
> 904 ms) speedup when restoring a 3GiB guest_memfd VM snapshot using a
> custom Firecracker version, both on Intel Ice Lake.
Does that mean that it's still 10% slower (based on the 20% above), or
were the 20% from a different micro-benchmark?
>
> Limitations
>
> While `filemap_grab_folios` handles THP/large folios internally and
> deals with reclaim artifacts in the pagecache (shadows), for simplicity
> reasons, the RFC does not support those as it demonstrates the
> optimisation applied to guest_memfd, which only uses small folios and
> does not support reclaim at the moment.
It might be worth pointing out that, while support for larger folios is
in the works, there will be scenarios where small folios are unavoidable
in the future (mixture of shared and private memory).
How hard would it be to just naturally support large folios as well?
We do have memfd_pin_folios() that can deal with that and provides a
slightly similar interface (struct folio **folios).
For reference, the interface is:
long memfd_pin_folios(struct file *memfd, loff_t start, loff_t end,
struct folio **folios, unsigned int max_folios,
pgoff_t *offset)
Maybe what you propose could even be used to further improve
memfd_pin_folios() internally? However, it must do this FOLL_PIN thingy,
so it must process each and every folio it processed.
--
Cheers,
David / dhildenb
next prev parent reply other threads:[~2025-01-10 17:01 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-10 15:46 Nikita Kalyazin
2025-01-10 15:46 ` [RFC PATCH 1/2] " Nikita Kalyazin
2025-01-10 15:46 ` [RFC PATCH 2/2] KVM: guest_memfd: use filemap_grab_folios in write Nikita Kalyazin
2025-01-10 21:08 ` Mike Day
2025-01-14 16:08 ` Nikita Kalyazin
2025-01-10 17:01 ` David Hildenbrand [this message]
2025-01-10 18:54 ` [RFC PATCH 0/2] mm: filemap: add filemap_grab_folios Nikita Kalyazin
2025-01-13 12:20 ` David Hildenbrand
2025-01-14 16:07 ` Nikita Kalyazin
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=5608af05-0b7a-4e11-b381-8b57b701e316@redhat.com \
--to=david@redhat.com \
--cc=ackerleytng@google.com \
--cc=derekmn@amazon.com \
--cc=graf@amazon.de \
--cc=jgowans@amazon.com \
--cc=jthoughton@google.com \
--cc=kalyazin@amazon.com \
--cc=kvm@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=michael.day@amd.com \
--cc=michael.roth@amd.com \
--cc=nsaenz@amazon.es \
--cc=pbonzini@redhat.com \
--cc=roypat@amazon.co.uk \
--cc=willy@infradead.org \
--cc=xmarcalx@amazon.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: 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
all inboxes | Powered by JetHome®