On Saturday, 2020-08-29 at 10:52:54 +08, Chuan Zheng wrote: > Implement set_sample_page_period()/get_sample_page_period() to sleep > specific time between sample actions. > > Signed-off-by: Chuan Zheng <zhengch...@huawei.com> > Reviewed-by: Dr. David Alan Gilbert <dgilb...@redhat.com>
Reviewed-by: David Edmondson <david.edmond...@oracle.com> > --- > migration/dirtyrate.c | 24 ++++++++++++++++++++++++ > migration/dirtyrate.h | 6 ++++++ > 2 files changed, 30 insertions(+) > > diff --git a/migration/dirtyrate.c b/migration/dirtyrate.c > index 420fc59..850126d 100644 > --- a/migration/dirtyrate.c > +++ b/migration/dirtyrate.c > @@ -27,6 +27,30 @@ > static int CalculatingState = DIRTY_RATE_STATUS_UNSTARTED; > static struct DirtyRateStat DirtyStat; > > +static int64_t set_sample_page_period(int64_t msec, int64_t initial_time) > +{ > + int64_t current_time; > + > + current_time = qemu_clock_get_ms(QEMU_CLOCK_REALTIME); > + if ((current_time - initial_time) >= msec) { > + msec = current_time - initial_time; > + } else { > + g_usleep((msec + initial_time - current_time) * 1000); > + } > + > + return msec; > +} > + > +static bool get_sample_page_period(int64_t sec) > +{ > + if (sec < MIN_FETCH_DIRTYRATE_TIME_SEC || > + sec > MAX_FETCH_DIRTYRATE_TIME_SEC) { > + return false; > + } > + > + return true; > +} > + > static int dirtyrate_set_state(int *state, int old_state, int new_state) > { > assert(new_state < DIRTY_RATE_STATUS__MAX); > diff --git a/migration/dirtyrate.h b/migration/dirtyrate.h > index faaf9da..8f9bc80 100644 > --- a/migration/dirtyrate.h > +++ b/migration/dirtyrate.h > @@ -29,6 +29,12 @@ > */ > #define MIN_RAMBLOCK_SIZE 128 > > +/* > + * Take 1s as minimum time for calculation duration > + */ > +#define MIN_FETCH_DIRTYRATE_TIME_SEC 1 > +#define MAX_FETCH_DIRTYRATE_TIME_SEC 60 > + > struct DirtyRateConfig { > uint64_t sample_pages_per_gigabytes; /* sample pages per GB */ > int64_t sample_period_seconds; /* time duration between two sampling */ > -- > 1.8.3.1 dme. -- Tonight I think I'll walk alone, I'll find my soul as I go home.