[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC 23/29] vub+postcopy: madvises
From: |
Dr. David Alan Gilbert (git) |
Subject: |
[Qemu-devel] [RFC 23/29] vub+postcopy: madvises |
Date: |
Wed, 28 Jun 2017 20:00:41 +0100 |
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 0658b6e847..ceddeac74f 100644
--- a/contrib/libvhost-user/libvhost-user.c
+++ b/contrib/libvhost-user/libvhost-user.c
@@ -451,11 +451,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;
/* Note: We might need to go back to using mmap_addr and
* len + mmap_offset for * huge pages, but then we do hope not to
--
2.13.0
- [Qemu-devel] [RFC 13/29] vhost+postcopy: Transmit 'listen' to client, (continued)
- [Qemu-devel] [RFC 13/29] vhost+postcopy: Transmit 'listen' to client, Dr. David Alan Gilbert (git), 2017/06/28
- [Qemu-devel] [RFC 14/29] vhost+postcopy: Register new regions with the ufd, Dr. David Alan Gilbert (git), 2017/06/28
- [Qemu-devel] [RFC 15/29] vhost+postcopy: Send address back to qemu, Dr. David Alan Gilbert (git), 2017/06/28
- [Qemu-devel] [RFC 16/29] vhost+postcopy: Stash RAMBlock and offset, Dr. David Alan Gilbert (git), 2017/06/28
- [Qemu-devel] [RFC 17/29] vhost+postcopy: Send requests to source for shared pages, Dr. David Alan Gilbert (git), 2017/06/28
- [Qemu-devel] [RFC 18/29] vhost+postcopy: Resolve client address, Dr. David Alan Gilbert (git), 2017/06/28
- [Qemu-devel] [RFC 19/29] postcopy: wake shared, Dr. David Alan Gilbert (git), 2017/06/28
- [Qemu-devel] [RFC 20/29] postcopy: postcopy_notify_shared_wake, Dr. David Alan Gilbert (git), 2017/06/28
- [Qemu-devel] [RFC 22/29] vhost+postcopy: Call wakeups, Dr. David Alan Gilbert (git), 2017/06/28
- [Qemu-devel] [RFC 21/29] vhost+postcopy: Add vhost waker, Dr. David Alan Gilbert (git), 2017/06/28
- [Qemu-devel] [RFC 23/29] vub+postcopy: madvises,
Dr. David Alan Gilbert (git) <=
- [Qemu-devel] [RFC 24/29] vhost+postcopy: Lock around set_mem_table, Dr. David Alan Gilbert (git), 2017/06/28
- [Qemu-devel] [RFC 25/29] vhu: enable = false on get_vring_base, Dr. David Alan Gilbert (git), 2017/06/28
- [Qemu-devel] [RFC 26/29] vhost: Add VHOST_USER_POSTCOPY_END message, Dr. David Alan Gilbert (git), 2017/06/28
- [Qemu-devel] [RFC 28/29] postcopy: Allow shared memory, Dr. David Alan Gilbert (git), 2017/06/28
- [Qemu-devel] [RFC 27/29] vhost+postcopy: Wire up POSTCOPY_END notify, Dr. David Alan Gilbert (git), 2017/06/28
- [Qemu-devel] [RFC 29/29] vhost-user: Claim support for postcopy, Dr. David Alan Gilbert (git), 2017/06/28
- Re: [Qemu-devel] [RFC 00/29] postcopy+vhost-user/shared ram, Dr. David Alan Gilbert, 2017/06/29