All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Stefan Hajnoczi <stefanha@gmail.com>
Cc: libvir-list@redhat.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Killing block migration in qemu?
Date: Wed, 17 Aug 2011 10:33:28 -0700	[thread overview]
Message-ID: <4E4BFB68.9060204@redhat.com> (raw)
In-Reply-To: <CAJSP0QVEhJFpAcEG54mrG7dTciAm2480bc8uH+d+Gj9__hwZdg@mail.gmail.com>

On 08/17/2011 10:21 AM, Stefan Hajnoczi wrote:
> On Wed, Aug 17, 2011 at 5:51 PM, Paolo Bonzini<pbonzini@redhat.com>  wrote:
>> following discussions yesterday with Juan Quintela and Marcelo Tosatti, here
>> is my humble proposal: remove block migration from qemu master.  It seems to
>> me that keeping block migration is going to slow down further improvements
>> on migration.  The main problems are:
>>
>> 1) there are very good reasons to move migration to a separate thread. Only
>> a limited amount of extra locking, perhaps none is needed in order to do so
>> for RAM and devices.  But the block drivers pretty much need to run under
>> the I/O thread lock, and coroutines will not help if the I/O thread is taken
>> by another thread.  It's hard/unreliable/pointless to ping-pong migration
>> between threads.
>
> The image streaming approach will also run in the I/O thread for the
> mid-term future.  Is the problem that the block migration code today
> is too tied into the actual migration code path and therefore stops
> from using it when migration happens in a separate thread?

Yes, the problem is that it is much harder to move block migration to a 
separate thread.  It will use a separate coroutine loader and busy loop 
on coroutine locks while holding the iothread.  I'm not even sure it 
won't deadlock.

Block streaming is anyway asynchronous, so it does not hurt that it 
stays in the I/O thread.

>> 2) there already are plans to reimplement block migration... it's called
>> streaming :) and not coincidentially it reuses some of the block migration
>> code.
>
> What are the concrete issues with the existing block migration code?

The code is fine, but it conflicts with a bunch of goals we have for RAM 
live migration.

> This sounds reasonable.  In fact we can do both pre-copy and post-copy
> block migration using streaming (+mirroring).

Right, post-copy is just another name of copy-on-read.  Pre-copy RAM 
migration and post-copy block migration might be the best of both worlds 
in many settings, since pre-copy block migration takes ages.

Paolo

  reply	other threads:[~2011-08-17 17:33 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-17 16:51 [Qemu-devel] Killing block migration in qemu? Paolo Bonzini
2011-08-17 17:21 ` Stefan Hajnoczi
2011-08-17 17:33   ` Paolo Bonzini [this message]
2011-08-17 20:41 ` Anthony Liguori

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=4E4BFB68.9060204@redhat.com \
    --to=pbonzini@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.