[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [libvirt-users] Adjust disk image migration (NBD)
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [libvirt-users] Adjust disk image migration (NBD) |
Date: |
Mon, 24 Feb 2014 16:16:54 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Fri, Feb 14, 2014 at 11:58:56AM +0100, Michal Privoznik wrote:
> On 14.02.2014 10:40, Joaquim Barrera wrote:
> > Hi all,
> >
> > As I am doing some tests with qemu, I realized that the way it does
> > 'migrate -i tcp:DEST:444' is not the same as 'libvirt migrate
> > --copy-storage-inc'. Basically qemu uses the same stream as RAM
> > migration and libvirt takes advantage of NBD transfer.
> >
> > With virsh migrate-setspeed I observed that one can only control the
> > transfer throughput of RAM, but not disk synchronization. At least this
> > is what I can see in bmon when doing a migration with incremental copy.
> >
> > The question is: Am I missing something or it is not implemented?
> >
> > Thank you guys!
> >
>
> I think this is actually a qemu bug. Libvirt passes the correct values:
>
>
> 2014-02-14 10:52:08.010+0000: 27701: debug : qemuMonitorIOWrite:504 :
> QEMU_MONITOR_IO_WRITE: mon=0x7f06cc00ea20
> buf={"execute":"drive-mirror","arguments":{"device":"drive-virtio-disk0","target":"nbd:masina:49153:exportname=drive-virtio-disk0","speed":1048576,"sync":"full","mode":"existing"},"id":"libvirt-15"}
>
>
> ...
>
> 2014-02-14 10:53:51.169+0000: 27701: debug : qemuMonitorIOWrite:504 :
> QEMU_MONITOR_IO_WRITE: mon=0x7f06cc00ea20
> buf={"execute":"migrate_set_speed","arguments":{"value":1048576},"id":"libvirt-221"}
>
>
> 2014-02-14 10:53:51.204+0000: 27701: debug : qemuMonitorIOWrite:504 :
> QEMU_MONITOR_IO_WRITE: mon=0x7f06cc00ea20
> buf={"execute":"migrate","arguments":{"detach":true,"blk":false,"inc":false,"uri":"fd:migrate"},"id":"libvirt-223"}
>
>
> However I observe what you do - disk migration is not shaped, while internal
> state is.
Thanks for raising this.
I noticed that mirror_run() does not throttle the first loop where it
populates the dirty bitmap using bdrv_is_allocated_above(). The main
copy loop does take the speed limit into account but perhaps that's
broken too.
Paolo, Jeff: Any ideas?
Stefan