On Wed, Apr 5, 2017 at 5:34 PM, Daniel P. Berrange <berra...@redhat.com> wrote: > On Wed, Apr 05, 2017 at 05:27:58PM +0800, jemmy858...@gmail.com wrote: >> From: Lidong Chen <lidongc...@tencent.com> >> >> 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. > > 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/ :|