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