qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: Vladimir Sementsov-Ogievskiy <vsementsov@parallels.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	stefanha@redhat.com
Cc: kwolf@redhat.com, den@openvz.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 9/9] block-migration: add named dirty bitmaps migration
Date: Tue, 13 Jan 2015 11:35:26 -0500	[thread overview]
Message-ID: <54B5494E.8040107@redhat.com> (raw)
In-Reply-To: <54B4E270.7090302@parallels.com>



On 01/13/2015 04:16 AM, Vladimir Sementsov-Ogievskiy wrote:
>
> On 12.01.2015 17:42, Paolo Bonzini wrote:
>> On 12/01/2015 15:20, Vladimir Sementsov-Ogievskiy wrote:
>>> On 09.01.2015 01:36, Paolo Bonzini wrote:
>>>> The bitmaps are transmitted many times in their entirety, but only the
>>>> last copy actually means something. The others are lost. This means
>>>> you should use the non-live interface (register_savevm). This will
>>>> simplify the code a lot.
>>> But what if the dirty bitmap is really big?
>>>
>>> For example, for 5 Pb drive the bitmap with granularity 65536 will be of
>>> 2 Gb size. So, shouldn't it be migrated iteratively for live migration?
>> But your code is not attempting to do that.  It is not attempting to
>> track the dirtiness of the dirty bitmap, so to speak.
>>
>> For such a huge storage, in any case, I suspect the solution is to not
>> use QEMU's live operations and, instead, operate at the storage level.
>>
>> Paolo
>
> On 12.01.2015 22:09, Paolo Bonzini wrote:
>> On 12/01/2015 18:31, John Snow wrote:
>>>> How do you track which parts of the disk have been acted upon (e.g.
>>>> mirrored in the case of the drive-mirror command), so that they have
>>>> become 0?
>>> Hm... so your question here is, "What happens if the named bitmap you
>>> are transferring  gets reset to 0 during migration? Will anybody track
>>> this change?"
>>>
>>> As far as I know, the only "consumer" of _named_ BdrvDirtyBitmaps is
>>> block/backup.c, and we do not support it for mirror (yet?)
>> Right.
>>
>>> So can a block-backup job be running WHILE we migrate?
>> I think so.
>>
>> Paolo
>
> There is no dirty bitmap for dirty bitmap in my solution, actually block
> migration dirty bitmap is used for this. It provides tracking of setting
> bitmap bits to 1 (when corresponding blocks are written), and if the
> bitmap changes only is this way (no other block-jobs are working with
> the migrated bitmap) - then the bitmap will be migrated iteratively as
> it is.
>
> Such approach doesn't provide tracking of resetting the bitmap to 0, and
> such changes are not migrated. So if the bitmap is in use by any
> block-job, it may have additional set bits after migration.
>
> If we want to migrate more precisely we need separate dirty bitmap for
> every migrated bitmap. And tracking of this dirty-dirty bitmap should be
> injected into BdrvDirtyBitmap interface.
>
> But do we really need precise migration of the bitmap being in use by
> some block-job (backup for example)? In this case we should "migrate"
> the backup process to, migrate working block-job.. Is it possible and is
> it planned to be implemented?
>
> Best regards,
> Vladimir
>
>
>

This is my question, too. The approach presented here will at least work 
correctly, as far as I can tell. The only problem may arise if we try to 
migrate while doing an incremental backup which will lead to too many 
dirty bits being migrated, which is just an inefficiency.

I'm not convinced it's important ...
Stefan, any thoughts?

      reply	other threads:[~2015-01-13 16:35 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-11 14:17 [Qemu-devel] [PATCH 0/8] Dirty bitmaps migration Vladimir Sementsov-Ogievskiy
2014-12-11 14:17 ` [Qemu-devel] [PATCH 1/9] block: rename bdrv_reset_dirty_bitmap Vladimir Sementsov-Ogievskiy
2015-01-08 21:19   ` John Snow
2014-12-11 14:17 ` [Qemu-devel] [PATCH 2/9] block-migration: fix pending() return value Vladimir Sementsov-Ogievskiy
2015-01-08 21:20   ` John Snow
2015-01-09 19:01     ` Dr. David Alan Gilbert
2014-12-11 14:17 ` [Qemu-devel] [PATCH 3/9] block: fix spoiling all dirty bitmaps by mirror and migration Vladimir Sementsov-Ogievskiy
2015-01-08 21:20   ` John Snow
2014-12-11 14:17 ` [Qemu-devel] [PATCH 4/9] hbitmap: store / restore Vladimir Sementsov-Ogievskiy
2015-01-08 21:21   ` John Snow
2015-01-08 21:37     ` Paolo Bonzini
2015-01-13 12:59     ` Vladimir Sementsov-Ogievskiy
2015-01-13 17:08       ` John Snow
2015-01-14 10:29         ` Vladimir Sementsov-Ogievskiy
2014-12-11 14:17 ` [Qemu-devel] [PATCH 5/9] block: BdrvDirtyBitmap store/restore interface Vladimir Sementsov-Ogievskiy
2015-01-08 21:22   ` John Snow
2015-01-14 11:27   ` Vladimir Sementsov-Ogievskiy
2014-12-11 14:17 ` [Qemu-devel] [PATCH 6/9] block-migration: tiny refactoring Vladimir Sementsov-Ogievskiy
2015-01-08 21:23   ` John Snow
2015-01-14 12:26     ` Vladimir Sementsov-Ogievskiy
2015-01-14 16:53       ` John Snow
2014-12-11 14:17 ` [Qemu-devel] [PATCH 7/9] block-migration: remove not needed iothread lock Vladimir Sementsov-Ogievskiy
2015-01-08 21:24   ` John Snow
2015-01-16 12:54     ` Vladimir Sementsov-Ogievskiy
2015-01-08 22:28   ` Paolo Bonzini
2015-01-16 13:03     ` Vladimir Sementsov-Ogievskiy
2014-12-11 14:17 ` [Qemu-devel] [PATCH 8/9] migration: add dirty parameter Vladimir Sementsov-Ogievskiy
2014-12-11 15:18   ` Eric Blake
2014-12-15  8:33     ` Vladimir Sementsov-Ogievskiy
2015-01-08 21:51   ` John Snow
2015-01-08 22:29     ` Eric Blake
2015-01-08 22:31       ` John Snow
2015-01-08 22:37     ` Paolo Bonzini
2014-12-11 14:17 ` [Qemu-devel] [PATCH 9/9] block-migration: add named dirty bitmaps migration Vladimir Sementsov-Ogievskiy
2015-01-08 22:05   ` John Snow
2015-01-17 17:17     ` Vladimir Sementsov-Ogievskiy
2015-01-20 17:25       ` John Snow
2015-01-08 22:36   ` Paolo Bonzini
2015-01-08 22:45     ` Eric Blake
2015-01-08 22:49       ` Paolo Bonzini
2015-01-12 14:20     ` Vladimir Sementsov-Ogievskiy
2015-01-12 14:42       ` Paolo Bonzini
2015-01-12 16:48   ` Paolo Bonzini
2015-01-12 17:31     ` John Snow
2015-01-12 19:09       ` Paolo Bonzini
2015-01-13  9:16         ` Vladimir Sementsov-Ogievskiy
2015-01-13 16:35           ` John Snow [this message]

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=54B5494E.8040107@redhat.com \
    --to=jsnow@redhat.com \
    --cc=den@openvz.org \
    --cc=kwolf@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=vsementsov@parallels.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).