qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: Blue Swirl <blauwirbel@gmail.com>,
	Stefan Hajnoczi <stefanha@gmail.com>,
	"Shribman, Aidan" <aidan.shribman@sap.com>,
	qemu-devel Developers <qemu-devel@nongnu.org>,
	"libvir-list@redhat.com" <libvir-list@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v4] XBZRLE delta for live migration of large memory apps
Date: Thu, 11 Aug 2011 11:17:09 +0300	[thread overview]
Message-ID: <4E439005.6050605@redhat.com> (raw)
In-Reply-To: <4E42DBAD.5030900@codemonkey.ws>

On 08/10/2011 10:27 PM, Anthony Liguori wrote:
>> This may be acceptable, wait until the entire migration cluster is
>> xzbrle capable before enabling it. If not, add a monitor command.
>
>
> 1) xzbrle needs to be disabled by default.  That way management tools 
> don't unknowingly enable it by not passing -no-xzbrle.

We could hook it to -M, though it's a bit gross.  Otherwise we need to 
document this clearly in the management tool author's guide.

>
> 3) a management tool should be able to query the source and 
> destination, and then enable xzbrle if both sides support it.
>
> You can argue that (3) could be static.  A command could be added to 
> toggle it dynamically through the monitor.
>
> But no matter what, someone has to touch libvirt and any other tool 
> that works with QEMU to make this thing work.  But this is a general 
> problem.  Any optional change to the migration protocol has exactly 
> the same characteristics whether it's XZBRLE, XZBRLE v2 (if there is a 
> v2), ASN.1, or any other form of compression that rolls around.

If we have two-way communication we can do this transparently in the 
protocol itself.

>
> Instead of teaching management tools how to deal with all of these 
> things, let's just fix this problem once.  It just takes:
>
> a) A query-migration-caps command that returns a dict with two lists 
> of strings.  Something like:
>
> { 'execute': 'query-migration-caps' }
> { 'return' : { 'capabilities': [ 'xbzrle' ], 'current': [] } }
>
> b) A set-migration-caps command that takes a list of strings.  It 
> simply takes the intersection of the capabilities set with the 
> argument and sets the current set to the result.  Something like:
>
> { 'execute': 'set-migration-caps', 'arguments': { 'set': [ 'xbzrle' ] }}
> { 'return' : {} }
>
> c) An internal interface to register a capability and an internal 
> interface to check if a capability is currently enabled.  The xzbrle 
> code just needs to disable itself if the capability isn't set.
>
> Then we teach libvirt (and other tools) to query the caps list on the 
> source, set the destination, query the current set on the destination, 
> and then set that set on the source.

This is only if the capability has no side effect.

>
> As we introduce new things, like the next great compression protocol, 
> or ASN.1, we don't need to touch libvirt again.  libvirt can still 
> know about the caps and selectively override QEMU if it's so inclined 
> but it prevents us from reinventing the same mechanisms over and over 
> again.

Right.

>
> Yes.  But that negotiation needs to become part of the "protocol" for 
> migration.  In the absence of that negotiation, we need to use the 
> wire protocol we use today.  We cannot have ad-hoc feature negotiation 
> for every change we make to the wire protocol.

Okay, as long as we have someone willing to implement it.

-- 
error compiling committee.c: too many arguments to function

  parent reply	other threads:[~2011-08-11  8:17 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-08  8:42 [Qemu-devel] [PATCH v4] XBZRLE delta for live migration of large memory apps Shribman, Aidan
2011-08-08 13:29 ` Anthony Liguori
2011-08-08 13:41   ` Alexander Graf
2011-08-08 13:46     ` Anthony Liguori
2011-08-08 13:49     ` Avi Kivity
2011-08-08 13:51   ` Avi Kivity
2011-08-08 14:15     ` Anthony Liguori
2011-08-08 14:23       ` Avi Kivity
2011-08-08 14:33         ` Anthony Liguori
2011-08-08 14:39           ` Avi Kivity
2011-08-08 15:08             ` Anthony Liguori
2011-08-08 14:04   ` [Qemu-devel] [libvirt] " Daniel P. Berrange
2011-08-08 14:42     ` Avi Kivity
2011-08-08 14:46 ` [Qemu-devel] " Avi Kivity
2011-08-08 14:47   ` Avi Kivity
2011-08-08 14:56     ` Stefan Hajnoczi
2011-08-08 15:01       ` Avi Kivity
2011-08-08 15:10     ` Anthony Liguori
2011-08-08 15:15       ` Avi Kivity
2011-08-08 16:19         ` Anthony Liguori
2011-08-08 16:53           ` Avi Kivity
2011-08-08 16:55             ` Anthony Liguori
2011-08-10 15:07               ` Shribman, Aidan
2011-08-10 15:12                 ` Avi Kivity
2011-08-10 15:58                   ` Anthony Liguori
2011-08-10 16:08                     ` Avi Kivity
2011-08-10 16:23                       ` Anthony Liguori
2011-08-10 16:40                         ` Avi Kivity
2011-08-10 19:27                           ` Anthony Liguori
2011-08-11  8:03                             ` Shribman, Aidan
2011-08-11 13:00                               ` Anthony Liguori
2011-08-11  8:17                             ` Avi Kivity [this message]
2011-08-11  9:16                               ` [Qemu-devel] [libvirt] " Daniel P. Berrange
2011-08-11  9:20                                 ` Avi Kivity
2011-08-11 13:03                               ` [Qemu-devel] " Anthony Liguori
2011-08-11  9:24                             ` [Qemu-devel] [libvirt] " Daniel P. Berrange

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4E439005.6050605@redhat.com \
    --to=avi@redhat.com \
    --cc=aidan.shribman@sap.com \
    --cc=anthony@codemonkey.ws \
    --cc=blauwirbel@gmail.com \
    --cc=libvir-list@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).