[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3] migration/block:limit the time used for bloc
From: |
858585 jemmy |
Subject: |
Re: [Qemu-devel] [PATCH v3] migration/block:limit the time used for block migration |
Date: |
Thu, 6 Apr 2017 11:18:34 +0800 |
On Wed, Apr 5, 2017 at 6:44 PM, 858585 jemmy <address@hidden> wrote:
> On Wed, Apr 5, 2017 at 5:34 PM, Daniel P. Berrange <address@hidden> wrote:
>> On Wed, Apr 05, 2017 at 05:27:58PM +0800, address@hidden wrote:
>>> From: Lidong Chen <address@hidden>
>>>
>>> when migration with high speed, mig_save_device_bulk invoke
>>> bdrv_is_allocated too frequently, and cause vnc reponse slowly.
>>> this patch limit the time used for bdrv_is_allocated.
>>
>> Can you explain why calling bdrv_is_allocated is impacting VNC performance ?
>>
>
> bdrv_is_allocated is called after qemu_mutex_lock_iothread.
>
> if (bmds->shared_base) {
> qemu_mutex_lock_iothread();
> aio_context_acquire(blk_get_aio_context(bb));
> /* Skip unallocated sectors; intentionally treats failure as
> * an allocated sector */
> while (cur_sector < total_sectors &&
> !bdrv_is_allocated(blk_bs(bb), cur_sector,
> MAX_IS_ALLOCATED_SEARCH, &nr_sectors)) {
> cur_sector += nr_sectors;
> }
> aio_context_release(blk_get_aio_context(bb));
> qemu_mutex_unlock_iothread();
> }
>
> and the main thread is also call qemu_mutex_lock_iothread.
>
> #0 0x00007f107322f264 in __lll_lock_wait () from /lib64/libpthread.so.0
> #1 0x00007f107322a508 in _L_lock_854 () from /lib64/libpthread.so.0
> #2 0x00007f107322a3d7 in pthread_mutex_lock () from /lib64/libpthread.so.0
> #3 0x0000000000949ecb in qemu_mutex_lock (mutex=0xfc51a0) at
> util/qemu-thread-posix.c:60
> #4 0x0000000000459e58 in qemu_mutex_lock_iothread () at
> /root/qemu/cpus.c:1516
> #5 0x0000000000945322 in os_host_main_loop_wait (timeout=28911939) at
> util/main-loop.c:258
> #6 0x00000000009453f2 in main_loop_wait (nonblocking=0) at
> util/main-loop.c:517
> #7 0x00000000005c76b4 in main_loop () at vl.c:1898
> #8 0x00000000005ceb77 in main (argc=49, argv=0x7fff921182b8,
> envp=0x7fff92118448) at vl.c:4709
>
>> Migration is running in a background thread, so shouldn't be impacting the
>> main thread which handles VNC, unless the block layer is perhaps acquiring
>> the global qemu lock ? I wouldn't expect such a lock to be held for just
>> the bdrv_is_allocated call though.
>>
I'm not sure it's safe to remove qemu_mutex_lock_iothread. i will
analyze and test it later.
this patch is simple, and can solve the problem now.
>> Regards,
>> Daniel
>> --
>> |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
>> |: http://libvirt.org -o- http://virt-manager.org :|
>> |: http://entangle-photo.org -o- http://search.cpan.org/~danberr/ :|
- [Qemu-devel] [PATCH v3] migration/block:limit the time used for block migration, jemmy858585, 2017/04/05
- Re: [Qemu-devel] [PATCH v3] migration/block:limit the time used for block migration, Daniel P. Berrange, 2017/04/05
- Re: [Qemu-devel] [PATCH v3] migration/block:limit the time used for block migration, Stefan Hajnoczi, 2017/04/06
- Re: [Qemu-devel] [PATCH v3] migration/block:limit the time used for block migration, Stefan Hajnoczi, 2017/04/07
- Re: [Qemu-devel] [PATCH v3] migration/block:limit the time used for block migration, 858585 jemmy, 2017/04/08
- Re: [Qemu-devel] [Qemu-block] [PATCH v3] migration/block:limit the time used for block migration, Stefan Hajnoczi, 2017/04/10