qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 00/16] vhost-user: add migration log support


From: Michael S. Tsirkin
Subject: Re: [Qemu-devel] [PATCH v3 00/16] vhost-user: add migration log support (for 2.5)
Date: Wed, 16 Sep 2015 17:46:35 +0300

On Thu, Aug 06, 2015 at 02:40:36PM +0200, address@hidden wrote:
> From: Marc-André Lureau <address@hidden>
> 
> Hi,
> 
> The following series implement shareable log for vhost-user to support
> memory tracking during live migration. On qemu-side, the solution is
> fairly straightfoward since vhost already supports the dirty log, only
> vhost-user couldn't access the log memory until then.
> 
> The series is based on top of "protocol feature negotiation" series
> proposed earlier by Michael S. Tsirkinm and "vhost user: Add live
> migration" series from Thibaut Collet .

I've been thinking about this. I wonder whether an alternative
approach would make sense.
Specifically, write protect the pages we want to track in host
PTEs; on a page fault, log the change (in kernel) and restart.

This could work for all of vhost, userspace qemu, vhost-user
transparently (so we don't need to teach dpdk to do
dirty logging).
It would be more robust since it removes the ability for
a buggy userspace to change memory without logging it.

And it would be faster since log is only set on the 1st
write, afterwards page is writeable - so no fault.

It's a kernel patch so more work.

I guess we can support both approaches (e.g. for old kernels)
but I thought I'd through this out there.


> Since v2:
> - changed some patch summary
> - added migration tests
> - added a patch to replace error message with a trace
> 
> The development branch I used is:
> https://github.com/elmarco/qemu branch "vhost-user"
> 
> More comments welcome!
> 
> Marc-André Lureau (16):
>   configure: probe for memfd
>   util: add linux-only memfd fallback
>   util: add memfd helpers
>   vhost: alloc shareable log
>   vhost: document log resizing
>   vhost: use variable arguments for vhost_call()
>   vhost-user: start and end the va_list
>   vhost-user: send log shm fd along with log_base
>   vhost-user: document migration log
>   net: add trace_vhost_user_event
>   vhost-user-test: move wait_for_fds() out
>   vhost-user-test: remove useless static check
>   vhost-user-test: wrap server in TestServer struct
>   vhost-user-test: learn to tweak various qemu arguments
>   vhost-user-test: add live-migration test
>   vhost-user-test: check ownership during migration
> 
>  configure                         |  19 ++
>  docs/specs/vhost-user.txt         |  42 +++++
>  hw/virtio/vhost-backend.c         |   4 +-
>  hw/virtio/vhost-user.c            |  52 ++++--
>  hw/virtio/vhost.c                 |  45 ++++-
>  include/hw/virtio/vhost-backend.h |   6 +-
>  include/hw/virtio/vhost.h         |   3 +-
>  include/qemu/memfd.h              |  24 +++
>  net/vhost-user.c                  |   5 +-
>  tests/vhost-user-test.c           | 366 
> +++++++++++++++++++++++++++++++-------
>  trace-events                      |   3 +
>  util/Makefile.objs                |   2 +-
>  util/memfd.c                      | 126 +++++++++++++
>  13 files changed, 602 insertions(+), 95 deletions(-)
>  create mode 100644 include/qemu/memfd.h
>  create mode 100644 util/memfd.c
> 
> -- 
> 2.4.3



reply via email to

[Prev in Thread] Current Thread [Next in Thread]