qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Peter Lieven <pl@kamp.de>
To: Eric Blake <eblake@redhat.com>
Cc: kwolf@redhat.com, quintela@redhat.com, qemu-devel@nongnu.org,
	owasserm@redhat.com, stefanha@redhat.com, pbonzini@redhat.com
Subject: Re: [Qemu-devel] [PATCHv3] block-migration: efficiently encode zero blocks
Date: Tue, 16 Jul 2013 09:10:56 +0200	[thread overview]
Message-ID: <51E4F200.1090808@kamp.de> (raw)
In-Reply-To: <51E46925.8040204@redhat.com>

On 15.07.2013 23:27, Eric Blake wrote:
> On 07/15/2013 04:55 AM, Peter Lieven wrote:
>> this patch adds an efficient encoding for zero blocks by
>> adding a new flag indiciating a block is completly zero.
> s/indiciating/indicating/
> s/completly/completely/
>
>> additionally bdrv_write_zeros() is used at the destination
>> to efficiently write these zeroes.
>>
>> v2->v3:
> patch revision history belongs outside of the commit message proper...
>
>>   - changed type of flags in blk_send() from int to uint64_t
>>   - added migration capability setting to enable sending
>>     of zero blocks.
>>
>> Signed-off-by: Peter Lieven <pl@kamp.de>
>> ---
> ...here, after the --- separator.
>
>>   block-migration.c             |   29 +++++++++++++++++++++++------
>>   include/migration/migration.h |    1 +
>>   migration.c                   |    9 +++++++++
>>   qapi-schema.json              |    7 ++++++-
>>   4 files changed, 39 insertions(+), 7 deletions(-)
>> +++ b/qapi-schema.json
>> @@ -613,10 +613,15 @@
>>   #          Disabled by default. Experimental: may (or may not) be renamed after
>>   #          further testing is complete. (since 1.6)
>>   #
>> +# @zero-blocks: During storage migration encode blocks of zeroes efficiently. This
>> +#          essentially saves 1MB of zeroes per block on the wire. Enabling requires
>> +#          source and target VM to support this feature. Disabled by default. (since 1.6)
> Does this capability have to be explicitly set on the receiving end, or
> can it be automatic?  I'd prefer automatic - where only the sending end
> has to explicitly turn on the optimization.
Only on the sending end. But you have to check that the receiver supports it as
you figured out. I can update the comments if you like.
>
> Are there any downsides to unconditionally using this when it is
> supported on both sides?  With xbzrle, there are workloads where

Downsides, not that I know of. The problem with xbzrle is that is is
very complex and memory and network speed my be so high that
not using XBZRLE can be better than enabling it. Here the only
penalty is the zero blocks check which is lightning fast compared to
disk access and the data is in memory anyway.

The benefit is that you gain a lot.

a) you save network bandwidth (which might be low).
b) you can explicitly write zeroes at the end. with the write zero
optimizations that exist for various drivers this can be a huge benefit
in the form that it keeps the target thin-provisioned.
Otherwise a block migration would always mean the target is fully
allocated.

Peter

  reply	other threads:[~2013-07-16  7:11 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-15 10:55 [Qemu-devel] [PATCHv3] block-migration: efficiently encode zero blocks Peter Lieven
2013-07-15 21:27 ` Eric Blake
2013-07-16  7:10   ` Peter Lieven [this message]
2013-07-18  5:03 ` Stefan Hajnoczi
2013-07-18  6:02   ` Peter Lieven

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=51E4F200.1090808@kamp.de \
    --to=pl@kamp.de \
    --cc=eblake@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=owasserm@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=stefanha@redhat.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).