From: Anthony Liguori <aliguori@us.ibm.com>
To: Jamie Lokier <jamie@shareable.org>
Cc: Chris Wright <chrisw@redhat.com>,
Uri Lublin <uri.lublin@qumranet.com>,
qemu-devel@nongnu.org, kvm@vger.kernel.org
Subject: Re: [Qemu-devel] [PATCH 7/10] Switch the memory savevm handler to be "live"
Date: Tue, 09 Sep 2008 17:49:15 -0500 [thread overview]
Message-ID: <48C6FD6B.1080607@us.ibm.com> (raw)
In-Reply-To: <20080909222519.GA13022@shareable.org>
Jamie Lokier wrote:
> Anthony Liguori wrote:
>
>> This patch replaces the static memory savevm/loadvm handler with a
>> "live" one. This handler is used even if performing a non-live
>> migration.
>>
>
> Excellent. One of the annoyances of savevm currently is it pauses the
> VM for a significant time, so you can't use it to snapshot production
> systems being used.
>
qcow2 needs some modification to allow this, but yeah, that's on my
todo. When you do a savevm today, you write everything to a chunk of
qcow2 file (presumably at the end). The only thing keeping others from
allocating over you is that you're essentially holding the big qemu lock
(because we're single threaded). With an asynchronous savevm, this no
longer holds. So what we really need to do, is let snapshots chain
within a qcow2 file. We can then write chunks of savevm data at a time
and chain the chunks together.
Shouldn't be that hard and should be reasonable to do in a backwards
compatible way.
>> The key difference between this handler and the previous is that each page is
>> prefixed with the address of the page. The QEMUFile rate limiting code, in
>> combination with the live migration dirty tracking bits, is used to determine
>> which pages should be sent and how many should be sent.
>>
>> The live save code "converges" when the number of dirty pages
>> reaches a fixed amount. Currently, this is 10 pages. This is
>> something that should eventually be derived from whatever the
>> bandwidth limitation is.
>>
>
> Does this mean that a snapshot could record the same page many times,
> perhaps even unbounded, while the guest is dirtying pages at a high
> rate? Or is the guest dirtying rate limited too to ensure the file
> writer will converge in bounded time?
>
With synchronous savevm (non-live), it's all deterministic. Everything
starts out dirty and nothing will get dirtied again because the guest
isn't running. With asynchronous savevm, it's indeterministic.
In general, you can't avoid the indeterminism. In practice, you usually
converge quickly so simply having a max iterations where if you exceed,
you stop the guest and revert to a synchronous savevm is completely
reasonable.
The other options would be to fail after a certain number of iterations
or just completely punt to the management tools and provide a mechanism
to cancel an existing live migration if it takes too long. This
functionality exists in KVM, I simple need to add it to this patch
series. It's quite simple really.
Regards,
Anthony Liguori
> Thanks,
> -- Jamie
>
next prev parent reply other threads:[~2008-09-09 22:50 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-09 19:49 [Qemu-devel] [PATCH 0/10] Live migration for QEMU Anthony Liguori
2008-09-09 19:49 ` [Qemu-devel] [PATCH 1/10] Refactor QEMUFile for live migration Anthony Liguori
2008-09-10 13:25 ` Chris Lalancette
2008-09-10 14:38 ` [Qemu-devel] " Glauber Costa
2008-09-10 15:05 ` Avi Kivity
2008-09-10 15:16 ` Anthony Liguori
2008-09-12 15:40 ` [Qemu-devel] " Blue Swirl
2008-09-09 19:49 ` [Qemu-devel] [PATCH 2/10] Allow the monitor to be suspended during non-blocking op Anthony Liguori
2008-09-10 6:52 ` Avi Kivity
2008-09-10 10:05 ` Daniel P. Berrange
2008-09-10 11:11 ` Avi Kivity
2008-09-10 11:14 ` Daniel P. Berrange
2008-09-10 15:36 ` Avi Kivity
2008-09-10 15:40 ` Anthony Liguori
2008-09-10 15:58 ` Jamie Lokier
2008-09-11 10:16 ` Avi Kivity
2008-09-11 11:59 ` Jamie Lokier
2008-09-10 13:07 ` Anthony Liguori
2008-09-10 13:26 ` Chris Lalancette
2008-09-10 10:01 ` Daniel P. Berrange
2008-09-10 13:11 ` Anthony Liguori
2008-09-09 19:49 ` [Qemu-devel] [PATCH 3/10] Add bdrv_flush_all() Anthony Liguori
2008-09-10 13:26 ` Chris Lalancette
2008-09-10 14:46 ` Glauber Costa
2008-09-10 15:19 ` Anthony Liguori
2008-09-10 15:32 ` Glauber Costa
2008-09-10 15:39 ` Avi Kivity
2008-09-10 16:37 ` Paul Brook
2008-09-12 15:43 ` Blue Swirl
2008-09-09 19:49 ` [Qemu-devel] [PATCH 4/10] Add dirty tracking for live migration Anthony Liguori
2008-09-10 14:52 ` Glauber Costa
2008-09-10 14:56 ` Anthony Liguori
2008-09-10 15:01 ` Glauber Costa
2008-09-09 19:49 ` [Qemu-devel] [PATCH 5/10] Add network announce function Anthony Liguori
2008-09-10 13:27 ` Chris Lalancette
2008-09-10 13:54 ` Anthony Liguori
2008-09-10 14:00 ` Avi Kivity
2008-09-09 19:49 ` [Qemu-devel] [PATCH 6/10] Introduce v3 of savevm protocol Anthony Liguori
2008-09-10 7:09 ` Avi Kivity
2008-09-09 19:49 ` [Qemu-devel] [PATCH 7/10] Switch the memory savevm handler to be "live" Anthony Liguori
2008-09-09 22:25 ` Jamie Lokier
2008-09-09 22:49 ` Anthony Liguori [this message]
2008-09-10 7:17 ` Avi Kivity
2008-09-10 13:10 ` Anthony Liguori
2008-09-09 19:50 ` [Qemu-devel] [PATCH 8/10] Introduce a buffered QEMUFile wrapper Anthony Liguori
2008-09-12 15:16 ` Blue Swirl
2008-09-09 19:50 ` [Qemu-devel] [PATCH 9/10] Introduce the UI components for live migration Anthony Liguori
2008-09-09 19:50 ` [Qemu-devel] [PATCH 10/10] TCP based " Anthony Liguori
2008-09-10 16:46 ` Blue Swirl
2008-09-10 16:51 ` Anthony Liguori
2008-09-11 12:13 ` [Qemu-devel] [PATCH 0/10] Live migration for QEMU Atsushi SAKAI
2008-09-11 13:06 ` Anthony Liguori
2008-09-11 13:30 ` Jamie Lokier
2008-09-11 14:12 ` Anthony Liguori
2008-09-11 15:32 ` Avi Kivity
2008-09-11 16:22 ` Anthony Liguori
2008-09-11 16:32 ` Avi Kivity
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=48C6FD6B.1080607@us.ibm.com \
--to=aliguori@us.ibm.com \
--cc=chrisw@redhat.com \
--cc=jamie@shareable.org \
--cc=kvm@vger.kernel.org \
--cc=qemu-devel@nongnu.org \
--cc=uri.lublin@qumranet.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).