From: Mario Casquero <mcasquer@redhat.com>
To: David Hildenbrand <david@redhat.com>
Cc: qemu-devel@nongnu.org, "Michael S . Tsirkin" <mst@redhat.com>,
Jason Wang <jasowang@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Stefano Garzarella <sgarzare@redhat.com>,
Germano Veit Michel <germano@redhat.com>,
Raphael Norwitz <raphael.norwitz@nutanix.com>
Subject: Re: [PATCH v2 00/14] libvhost-user: support more memslots and cleanup memslot handling code
Date: Mon, 11 Mar 2024 21:03:04 +0100 [thread overview]
Message-ID: <CAMXpfWv5usTd__TahmDiFjMMkf-CeaVDSWEv3OLoDnRsz4k-uw@mail.gmail.com> (raw)
In-Reply-To: <CAMXpfWv2Pdn8ThtQFQgL0BUX4KHWvaZixaAc1C6STL06Gqx6og@mail.gmail.com>
This series has been successfully tested by QE. Start the
qemu-storage-daemon in the background with a rhel 9.5 image and
vhost-user-blk. After that, boot up a VM with virtio-mem and
vhost-user-blk-pci. Check with the HMP command 'info mtree' that
virtio-mem is making use of multiple memslots.
Tested-by: Mario Casquero <mcasquer@redhat.com>
On Mon, Mar 11, 2024 at 9:00 PM Mario Casquero <mcasquer@redhat.com> wrote:
>
> This series has been successfully tested by QE. Start the
> qemu-storage-daemon in the background with a rhel 9.5 image and
> vhost-user-blk. After that, boot up a VM with virtio-mem and
> vhost-user-blk-pci. Check with the HMP command 'info mtree' that
> virtio-mem is making use of multiple memslots.
>
>
> On Wed, Feb 14, 2024 at 4:18 PM David Hildenbrand <david@redhat.com> wrote:
> >
> > This series adds support for more memslots (509) to libvhost-user, to
> > make it fully compatible with virtio-mem that uses up to 256 memslots
> > accross all memory devices in "dynamic-memslot" mode (more details
> > in patch #2).
> >
> > With that in place, this series optimizes and extends memory region
> > handling in libvhost-user:
> > * Heavily deduplicate and clean up the memory region handling code
> > * Speeds up GPA->VA translation with many memslots using binary search
> > * Optimize mmap_offset handling to use it as fd_offset for mmap()
> > * Avoid ring remapping when adding a single memory region
> > * Avoid dumping all guest memory, possibly allocating memory in sparse
> > memory mappings when the process crashes
> >
> > I'm being very careful to not break some weird corner case that modern
> > QEMU might no longer trigger, but older one could have triggered or some
> > other frontend might trigger.
> >
> > The only thing where I am not careful is to forbid memory regions that
> > overlap in GPA space: it doesn't make any sense.
> >
> > With this series, virtio-mem (with dynamic-memslots=on) +
> > qemu-storage-daemon works flawlessly and as expected in my tests.
> >
> > v1 -> v2:
> > * Drop "libvhost-user: Fix msg_region->userspace_addr computation"
> > -> Not actually required
> > * "libvhost-user: Factor out adding a memory region"
> > -> Make debug output more consistent (add missing ":")
> > * "libvhost-user: Use most of mmap_offset as fd_offset"
> > -> get_fd_pagesize -> get_fd_hugepagesize; remove getpagesize()
> > -> "mmap_offset:" to "old mmap_offset:" in debug message
> > -> "adj mmap_offset:" to "new mmap_offset:" in debug message
> > -> Use "(unsigned int)fs.f_type"; the man page of fstatfs() calls out
> > that the type of f_type can vary depending on the architecture.
> > "unsigned int" is sufficient here.
> > -> Updated patch description
> > * Added RBs+ACKs
> > * Did a Gitlab CI run, seems to be happy reagrding libvhost-user
> >
> > Cc: Michael S. Tsirkin <mst@redhat.com>
> > Cc: Jason Wang <jasowang@redhat.com>
> > Cc: Stefan Hajnoczi <stefanha@redhat.com>
> > Cc: Stefano Garzarella <sgarzare@redhat.com>
> > Cc: Germano Veit Michel <germano@redhat.com>
> > Cc: Raphael Norwitz <raphael.norwitz@nutanix.com>
> >
> > David Hildenbrand (14):
> > libvhost-user: Dynamically allocate memory for memory slots
> > libvhost-user: Bump up VHOST_USER_MAX_RAM_SLOTS to 509
> > libvhost-user: Factor out removing all mem regions
> > libvhost-user: Merge vu_set_mem_table_exec_postcopy() into
> > vu_set_mem_table_exec()
> > libvhost-user: Factor out adding a memory region
> > libvhost-user: No need to check for NULL when unmapping
> > libvhost-user: Don't zero out memory for memory regions
> > libvhost-user: Don't search for duplicates when removing memory
> > regions
> > libvhost-user: Factor out search for memory region by GPA and simplify
> > libvhost-user: Speedup gpa_to_mem_region() and vu_gpa_to_va()
> > libvhost-user: Use most of mmap_offset as fd_offset
> > libvhost-user: Factor out vq usability check
> > libvhost-user: Dynamically remap rings after (temporarily?) removing
> > memory regions
> > libvhost-user: Mark mmap'ed region memory as MADV_DONTDUMP
> >
> > subprojects/libvhost-user/libvhost-user.c | 595 ++++++++++++----------
> > subprojects/libvhost-user/libvhost-user.h | 10 +-
> > 2 files changed, 334 insertions(+), 271 deletions(-)
> >
> > --
> > 2.43.0
> >
> >
next prev parent reply other threads:[~2024-03-11 20:03 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-14 15:16 [PATCH v2 00/14] libvhost-user: support more memslots and cleanup memslot handling code David Hildenbrand
2024-02-14 15:16 ` [PATCH v2 01/14] libvhost-user: Dynamically allocate memory for memory slots David Hildenbrand
2024-02-14 15:16 ` [PATCH v2 02/14] libvhost-user: Bump up VHOST_USER_MAX_RAM_SLOTS to 509 David Hildenbrand
2024-02-14 15:16 ` [PATCH v2 03/14] libvhost-user: Factor out removing all mem regions David Hildenbrand
2024-02-14 15:16 ` [PATCH v2 04/14] libvhost-user: Merge vu_set_mem_table_exec_postcopy() into vu_set_mem_table_exec() David Hildenbrand
2024-02-14 15:16 ` [PATCH v2 05/14] libvhost-user: Factor out adding a memory region David Hildenbrand
2024-02-14 15:16 ` [PATCH v2 06/14] libvhost-user: No need to check for NULL when unmapping David Hildenbrand
2024-02-14 15:16 ` [PATCH v2 07/14] libvhost-user: Don't zero out memory for memory regions David Hildenbrand
2024-02-14 15:16 ` [PATCH v2 08/14] libvhost-user: Don't search for duplicates when removing " David Hildenbrand
2024-02-14 15:16 ` [PATCH v2 09/14] libvhost-user: Factor out search for memory region by GPA and simplify David Hildenbrand
2024-02-14 15:16 ` [PATCH v2 10/14] libvhost-user: Speedup gpa_to_mem_region() and vu_gpa_to_va() David Hildenbrand
2024-02-14 15:16 ` [PATCH v2 11/14] libvhost-user: Use most of mmap_offset as fd_offset David Hildenbrand
2024-02-14 15:16 ` [PATCH v2 12/14] libvhost-user: Factor out vq usability check David Hildenbrand
2024-02-14 15:17 ` [PATCH v2 13/14] libvhost-user: Dynamically remap rings after (temporarily?) removing memory regions David Hildenbrand
2024-02-14 15:17 ` [PATCH v2 14/14] libvhost-user: Mark mmap'ed region memory as MADV_DONTDUMP David Hildenbrand
2024-03-11 20:00 ` [PATCH v2 00/14] libvhost-user: support more memslots and cleanup memslot handling code Mario Casquero
2024-03-11 20:03 ` Mario Casquero [this message]
2024-03-12 8:26 ` David Hildenbrand
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=CAMXpfWv5usTd__TahmDiFjMMkf-CeaVDSWEv3OLoDnRsz4k-uw@mail.gmail.com \
--to=mcasquer@redhat.com \
--cc=david@redhat.com \
--cc=germano@redhat.com \
--cc=jasowang@redhat.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=raphael.norwitz@nutanix.com \
--cc=sgarzare@redhat.com \
--cc=stefanha@redhat.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;
as well as URLs for NNTP newsgroup(s).