|
From: | Anthony Liguori |
Subject: | Re: [Qemu-devel] [PATCH v4] XBZRLE delta for live migration of large memory apps |
Date: | Mon, 08 Aug 2011 09:15:48 -0500 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110516 Lightning/1.0b2 Thunderbird/3.1.10 |
On 08/08/2011 08:51 AM, Avi Kivity wrote:
On 08/08/2011 04:29 PM, Anthony Liguori wrote:One thing that strikes me about this algorithm is that it's very good for a particular type of workload--shockingly good really.Poking bytes at random places in memory is fairly generic. If you have a lot of small objects, and modify a subset of them, this is the pattern you get.I think workload aware migration compression is possible for a lot of different types of workloads. That makes me a bit wary of QEMU growing quite a lot of compression mechanisms. It makes me think that this logic may really belong at a higher level where more information is known about the workload. For instance, I can imagine XBZRLE living in something like libvirt.A better model would be plugin based.
exec helpers are plugins. They just live in a different address space and a channel to exchange data (pipe).
If we did .so plugins, which I'm really not opposed to, I'd want the interface to be something like:
typedef struct MigrationTransportClass { ssize_t (*writev)(MigrationTransport *obj, struct iovec *iov, int iovcnt); } MigrationTransportClass;I think it's useful to use an interface like this because it makes it easy to put the transport in a dedicated thread that didn't hold qemu_mutex (which is sort of equivalent to using a fork'd helper but is zero-copy at the expense of less isolation).
Regards, Anthony Liguori
[Prev in Thread] | Current Thread | [Next in Thread] |