Re: [Qemu-devel] Heavy memory_region_get_dirty() -- Re: [PATCH 0/1 v2] KVM: Alleviate mmu_lock contention during dirty logging

2012-05-02 Thread Takuya Yoshikawa
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

2012-05-02 Thread Avi Kivity
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