Re: [Qemu-devel] Heavy memory_region_get_dirty() -- Re: [PATCH 0/1 v2] KVM: Alleviate mmu_lock contention during dirty logging
On Wed, 02 May 2012 14:33:55 +0300 Avi Kivity wrote: > > = > > perf top -t ${QEMU_TID} > > = > > 51.52% qemu-system-x86_64 [.] memory_region_get_dirty > > 16.73% qemu-system-x86_64 [.] ram_save_remaining > > > > memory_region_get_dirty() is called from ram_save_remaining(). Looks > like quadratic behaviour here: we send a few pages in > ram_save_remaining(), then walk the entire dirty bitmap to calculate > expected_time(). > > We should probably calculate expected_time once per iteration. There seems to be many unnecessary/repeated calculations. Not restricted to this expected_time one. Takuya
Re: [Qemu-devel] Heavy memory_region_get_dirty() -- Re: [PATCH 0/1 v2] KVM: Alleviate mmu_lock contention during dirty logging
On 05/02/2012 02:24 PM, Takuya Yoshikawa wrote: > During checking mmu_lock contention, I noticed that QEMU's > memory_region_get_dirty() was using unexpectedly much CPU time. > > Thanks, > Takuya > > = > perf top -t ${QEMU_TID} > = > 51.52% qemu-system-x86_64 [.] memory_region_get_dirty > 16.73% qemu-system-x86_64 [.] ram_save_remaining > memory_region_get_dirty() is called from ram_save_remaining(). Looks like quadratic behaviour here: we send a few pages in ram_save_remaining(), then walk the entire dirty bitmap to calculate expected_time(). We should probably calculate expected_time once per iteration. -- error compiling committee.c: too many arguments to function