On (Mon) 02 Nov 2015 [15:36:59], Liang Li wrote: > The patch 3ea3b7fa9af067982f34b of kvm introduces a lazy collapsing > of small sptes into large sptes mechanism, which intend to solve the > performance drop issue if live migration fails or is canceled. The > rmap will be scanned in the KVM_SET_USER_MEMORY_REGION ioctl context > when dirty logging is stopped so as to drop the small sptes, scanning > the rmap and drop the small sptes is a time consuming operation which > will take dozens of milliseconds, the actual time depends on VM's > memory size. For a VM with 8GB RAM, it will take about 30ms. > > The current QEMU code stop the dirty logging during the pause and > copy stage by calling the migration_end() function. Now migration_end() > is a time consuming operation because it calls > memroy_global_dirty_log_stop(), which will trigger the scanning of rmap > and dropping small sptes operation. So call migration_end() before all > the vmsate data has already been transferred to the destination will > prolong VM downtime. > > migration_end() should be deferred after all the data has been > transferred to the destination. blk_mig_cleanup() can be deferred too.
Reviewed-by: Amit Shah <amit.s...@redhat.com> Thanks for adding to the commit message, that helped. Amit