From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Jidong Xiao <jidong.xiao@gmail.com>
Cc: qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] Question regarding two variables in qemu migration code
Date: Tue, 13 Jan 2015 18:11:49 +0000 [thread overview]
Message-ID: <20150113181149.GB5193@work-vm> (raw)
In-Reply-To: <CAG4AFWZMQTPHZQz+fuheD4AFV4d9rEsjVHa6jSHJ=ooKfpEv7w@mail.gmail.com>
* Jidong Xiao (jidong.xiao@gmail.com) wrote:
> On Tue, Jan 13, 2015 at 1:38 AM, Dr. David Alan Gilbert
> <dgilbert@redhat.com> wrote:
> > * Jidong Xiao (jidong.xiao@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.
It's because there are two periods:
migration_dirty_pages - num_dirty_pages_init
is the number of pages found dirty in this call to migration_bitmap_sync
num_dirty_pages_period
is the number of pages found dirty in a ~1 second periods, as tested by
the code in migration_bitmap_sync after the:
if (end_time > start_time + 1000) {
migration_bitmap_sync is called multiple times within that ~1 second period, and
num_dirty_pages_period accumulates across the calls.
Dave
>
> -Jidong
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
prev parent reply other threads:[~2015-01-13 18:12 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-13 2:45 [Qemu-devel] Question regarding two variables in qemu migration code Jidong Xiao
2015-01-13 9:38 ` Dr. David Alan Gilbert
2015-01-13 17:58 ` Jidong Xiao
2015-01-13 18:11 ` Dr. David Alan Gilbert [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150113181149.GB5193@work-vm \
--to=dgilbert@redhat.com \
--cc=jidong.xiao@gmail.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.