On Tue, Jan 13, 2015 at 1:38 AM, Dr. David Alan Gilbert
<dgilb...@redhat.com> wrote:
> * Jidong Xiao (jidong.x...@gmail.com) wrote:
>> Hi,
>
> Hi,
>
>> I am looking at the qemu source code, and trying to understand the
>> migration part. In arch_init.c, there are two variables which seems
>> quite confusing to me,
>>
>> They are:
>>
>> static uint64_t migration_dirty_pages;
>
> 'migration_dirty_pages' is the number of pages that are currently known
> that need to be sent to the destination; it goes down whenever we send
> a page, but goes up when we sync the dirty bitmap that tells us that
> something changed the data in the page (see migration_bitmap_sync_range )
>
>> static int64_t num_dirty_pages_period; // defined in function
>> migration_bitmap_sync()
>
> This is looking how many pages we've noticed are now dirty within
> a particular time - to try and get an estimate of how fast memory is changing
> If you see migration_bitmap_sync  has an:
>        if (end_time > start_time + 1000) {
>
> and inside there it uses num_dirty_pages_period to update dirty_pages_rate.
>
>>
>> Can anyone kindly explain that what does these two variables mean? Thanks.
>>
>> -Jidong
>
> Dave
> --
Thanks Dave, your explanation is really really helpful.

But in function migration_bitmap_sync(), I see this:

    num_dirty_pages_period += migration_dirty_pages - num_dirty_pages_init;

If as you said, num_dirty_pages_period refers to the pages get dirty
within a particular time, then why it is "+=“, instead of "="? i.e.,
something like this:

    num_dirty_pages_period = migration_dirty_pages - num_dirty_pages_init;

I just don't see why num_dirty_pages_period has to be accumulated with
its previous value.

-Jidong

Reply via email to