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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).