From: Peter Xu <peterx@redhat.com>
To: Hyman <huangy81@chinatelecom.cn>
Cc: Eduardo Habkost <ehabkost@redhat.com>,
Juan Quintela <quintela@redhat.com>,
qemu-devel@nongnu.org,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
Chuan Zheng <zhengchuan@huawei.com>,
Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [PATCH v6 2/2] migration/dirtyrate: implement dirty-bitmap dirtyrate calculation
Date: Mon, 19 Jul 2021 11:48:18 -0400 [thread overview]
Message-ID: <YPWewmqqke30dLGW@t490s> (raw)
In-Reply-To: <7e12280a-db24-d947-fdb5-83b83f3ac814@chinatelecom.cn>
On Sat, Jul 17, 2021 at 10:57:50AM +0800, Hyman wrote:
>
>
> 在 2021/7/17 3:36, Peter Xu 写道:
> > On Fri, Jul 16, 2021 at 07:13:47PM +0800, huangy81@chinatelecom.cn wrote:
> > > +static void calculate_dirtyrate_dirty_bitmap(struct DirtyRateConfig config)
> > > +{
> > > + int64_t msec = 0;
> > > + int64_t start_time;
> > > + DirtyPageRecord dirty_pages;
> >
> > [1]
> >
> > > +
> > > + dirtyrate_global_dirty_log_start();
> > > +
> > > + /*
> > > + * 1'round of log sync may return all 1 bits with
> > > + * KVM_DIRTY_LOG_INITIALLY_SET enable
> > > + * skip it unconditionally and start dirty tracking
> > > + * from 2'round of log sync
> > > + */
> > > + dirtyrate_global_dirty_log_sync();
> > > +
> > > + /*
> > > + * reset page protect manually and unconditionally.
> > > + * this make sure kvm dirty log be cleared if
> > > + * KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE cap is enabled.
> > > + */
> > > + dirtyrate_manual_reset_protect();
> > > +
> >
> > [2]
> >
> > > + record_dirtypages_bitmap(&dirty_pages, true);
> >
> > [3]
> >
> > > +
> > > + start_time = qemu_clock_get_ms(QEMU_CLOCK_REALTIME);
> > > + DirtyStat.start_time = start_time / 1000;
> > > +
> > > + msec = config.sample_period_seconds * 1000;
> > > + msec = set_sample_page_period(msec, start_time);
> > > + DirtyStat.calc_time = msec / 1000;
> > > +
> > > + /* fetch dirty bitmap from kvm and stop dirty tracking */
> >
> > I don't think it really fetched anything.. So I think we need:
> >
> > dirtyrate_global_dirty_log_sync();
> >
> > It seems to be there in older versions but not in the latest two versions.
> yes, latest version dropped this because dirtyrate_global_dirty_log_stop
> below already do the sync before stop dirty log, which is recommended in
> patchset of "support dirtyrate at the granualrity of vcpu" and make
> dirtyrate more accurate. the older version do not consider this. :)
Oh I see. I was still using your old code so it does not have that bit. It's okay.
> >
> > Please still remember to smoke the patches before posting, because without the
> > log sync we'll read nothing.
> >
> > > + dirtyrate_global_dirty_log_stop();
> > > +
> > > + record_dirtypages_bitmap(&dirty_pages, false);
> >
> > [4]
> >
> > I think it's easier we take bql at [1]/[3] and release at [2]/[4], rather than
> > taking it for every function. Then we can move the bql operations out of
> > dirtyrate_global_dirty_log_stop() in this patch.
> yeah, take bql at [1] and release at [2] is reasonable.
> but if we try to take bql at [3], it will sleep for calculation time in
> set_sample_page_period which is configured by user, which may be a heavy
> overhead.
> how about we take bql at [1] and release at [2], ingore bql at [3]/[4] and
> let it be the same as older versoin. since we only copy total_dirty_pages to
> local var in "get_dirtyrate" thread and maybe we don't need bql.
Sounds good, thanks.
--
Peter Xu
prev parent reply other threads:[~2021-07-19 15:49 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-16 11:13 [PATCH v6 0/2] support dirtyrate measurement with dirty bitmap huangy81
2021-07-16 11:13 ` [PATCH v6 1/2] memory: introduce total_dirty_pages to stat dirty pages huangy81
2021-07-16 11:13 ` [PATCH v6 2/2] migration/dirtyrate: implement dirty-bitmap dirtyrate calculation huangy81
2021-07-16 19:36 ` Peter Xu
2021-07-17 2:57 ` Hyman
2021-07-19 15:48 ` Peter Xu [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=YPWewmqqke30dLGW@t490s \
--to=peterx@redhat.com \
--cc=dgilbert@redhat.com \
--cc=ehabkost@redhat.com \
--cc=huangy81@chinatelecom.cn \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=zhengchuan@huawei.com \
/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.