Message ID | 20211130104136.40927-1-david@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | virtio-mem: Support "prealloc=on" | expand |
On 11/30/21 11:41, David Hildenbrand wrote: > Based-on: <20211130092838.24224-1-david@redhat.com> > > Patch #1 - #7 are fully reviewed [1] but did not get picked up yet, so I'm > sending them along here, as they are required to use os_mem_prealloc() in > a safe way once the VM is running. > > Support preallocation of memory to make virtio-mem safe to use with > scarce memory resources such as hugetlb. Before acknowledging a plug > request from the guest, we'll try preallcoating memory. If that fails, > we'll fail the request gracefully and warn the usr once. > > To fully support huge pages for shared memory, we'll have to adjust shared > memory users, such as virtiofsd, to map guest memory via MAP_NORESERVE as > well, because otherwise, they'll end up overwriting the "reserve=off" > decision made by QEMU and try reserving huge pages for the sparse memory > region. > > In the future, we might want to process guest requests, including > preallocating memory, asynchronously via a dedicated iothread. > > [1] https://lkml.kernel.org/r/20211004120208.7409-1-david@redhat.com > > Cc: Paolo Bonzini <pbonzini@redhat.com> > Cc: "Michael S. Tsirkin" <mst@redhat.com> > Cc: Igor Mammedov <imammedo@redhat.com> > Cc: Eduardo Habkost <ehabkost@redhat.com> > Cc: Dr. David Alan Gilbert <dgilbert@redhat.com> > Cc: Daniel P. Berrangé <berrange@redhat.com> > Cc: Gavin Shan <gshan@redhat.com> > Cc: Hui Zhu <teawater@gmail.com> > Cc: Sebastien Boeuf <sebastien.boeuf@intel.com> > Cc: Pankaj Gupta <pankaj.gupta.linux@gmail.com> > Cc: Michal Prívozník <mprivozn@redhat.com> > > David Hildenbrand (8): > util/oslib-posix: Let touch_all_pages() return an error > util/oslib-posix: Support MADV_POPULATE_WRITE for os_mem_prealloc() > util/oslib-posix: Introduce and use MemsetContext for > touch_all_pages() > util/oslib-posix: Don't create too many threads with small memory or > little pages > util/oslib-posix: Avoid creating a single thread with > MADV_POPULATE_WRITE > util/oslib-posix: Support concurrent os_mem_prealloc() invocation > util/oslib-posix: Forward SIGBUS to MCE handler under Linux > virtio-mem: Support "prealloc=on" option > > hw/virtio/virtio-mem.c | 39 +++++- > include/hw/virtio/virtio-mem.h | 4 + > include/qemu/osdep.h | 7 + > softmmu/cpus.c | 4 + > util/oslib-posix.c | 231 +++++++++++++++++++++++++-------- > 5 files changed, 226 insertions(+), 59 deletions(-) > Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Michal