[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC v2 24/32] vub+postcopy: madvises
From: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [RFC v2 24/32] vub+postcopy: madvises |
Date: |
Wed, 30 Aug 2017 03:48:50 -0700 |
Hi
"libvhost-user: madvises for postcopy" for ex, would be nicer imho
On Thu, Aug 24, 2017 at 12:27 PM, Dr. David Alan Gilbert (git)
<address@hidden> wrote:
> From: "Dr. David Alan Gilbert" <address@hidden>
>
> Clear the area and turn off THP.
>
> Signed-off-by: Dr. David Alan Gilbert <address@hidden>
> ---
> contrib/libvhost-user/libvhost-user.c | 32 ++++++++++++++++++++++++++++++--
> 1 file changed, 30 insertions(+), 2 deletions(-)
>
> diff --git a/contrib/libvhost-user/libvhost-user.c
> b/contrib/libvhost-user/libvhost-user.c
> index 5ec54f7d60..d816851c6d 100644
> --- a/contrib/libvhost-user/libvhost-user.c
> +++ b/contrib/libvhost-user/libvhost-user.c
> @@ -450,11 +450,39 @@ vu_set_mem_table_exec(VuDev *dev, VhostUserMsg *vmsg)
> }
>
> if (dev->postcopy_listening) {
> + int ret;
> /* We should already have an open ufd need to mark each memory
> * range as ufd.
> - * Note: Do we need any madvises? Well it's not been accessed
> - * yet, still probably need no THP to be safe, discard to be
> safe?
> */
> +
> + /* Discard any mapping we have here; note I can't use MADV_REMOVE
> + * or fallocate to make the hole since I don't want to lose
> + * data that's already arrived in the shared process.
> + * TODO: How to do hugepage
> + */
> + ret = madvise((void *)dev_region->mmap_addr,
> + dev_region->size + dev_region->mmap_offset,
> + MADV_DONTNEED);
> + if (ret) {
> + fprintf(stderr,
> + "%s: Failed to madvise(DONTNEED) region %d: %s\n",
> + __func__, i, strerror(errno));
> + }
> + /* Turn off transparent hugepages so we dont get lose wakeups
> + * in neighbouring pages.
> + * TODO: Turn this backon later.
> + */
> + ret = madvise((void *)dev_region->mmap_addr,
> + dev_region->size + dev_region->mmap_offset,
> + MADV_NOHUGEPAGE);
> + if (ret) {
> + /* Note: This can happen legally on kernels that are
> configured
> + * without madvise'able hugepages
> + */
> + fprintf(stderr,
> + "%s: Failed to madvise(NOHUGEPAGE) region %d: %s\n",
> + __func__, i, strerror(errno));
> + }
> struct uffdio_register reg_struct;
> reg_struct.range.start = (uintptr_t)dev_region->mmap_addr;
> reg_struct.range.len = dev_region->size +
> dev_region->mmap_offset;
> --
> 2.13.5
>
Errors are non-fatal? patch looks ok to me, despite the TODOs :).
Reviewed-by: Marc-André Lureau <address@hidden>
--
Marc-André Lureau
- Re: [Qemu-devel] [RFC v2 17/32] vhost+postcopy: Stash RAMBlock and offset, (continued)
- [Qemu-devel] [RFC v2 18/32] vhost+postcopy: Send requests to source for shared pages, Dr. David Alan Gilbert (git), 2017/08/24
- [Qemu-devel] [RFC v2 19/32] vhost+postcopy: Resolve client address, Dr. David Alan Gilbert (git), 2017/08/24
- [Qemu-devel] [RFC v2 20/32] postcopy: wake shared, Dr. David Alan Gilbert (git), 2017/08/24
- [Qemu-devel] [RFC v2 21/32] postcopy: postcopy_notify_shared_wake, Dr. David Alan Gilbert (git), 2017/08/24
- [Qemu-devel] [RFC v2 22/32] vhost+postcopy: Add vhost waker, Dr. David Alan Gilbert (git), 2017/08/24
- [Qemu-devel] [RFC v2 23/32] vhost+postcopy: Call wakeups, Dr. David Alan Gilbert (git), 2017/08/24
- [Qemu-devel] [RFC v2 24/32] vub+postcopy: madvises, Dr. David Alan Gilbert (git), 2017/08/24
- Re: [Qemu-devel] [RFC v2 24/32] vub+postcopy: madvises,
Marc-André Lureau <=
- [Qemu-devel] [RFC v2 25/32] vhost+postcopy: Lock around set_mem_table, Dr. David Alan Gilbert (git), 2017/08/24
- [Qemu-devel] [RFC v2 26/32] vhost: Add VHOST_USER_POSTCOPY_END message, Dr. David Alan Gilbert (git), 2017/08/24
- [Qemu-devel] [RFC v2 27/32] vhost+postcopy: Wire up POSTCOPY_END notify, Dr. David Alan Gilbert (git), 2017/08/24
- [Qemu-devel] [RFC v2 28/32] postcopy: Allow shared memory, Dr. David Alan Gilbert (git), 2017/08/24
- [Qemu-devel] [RFC v2 29/32] vhost-user: Claim support for postcopy, Dr. David Alan Gilbert (git), 2017/08/24