mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 01:33:56 -06:00
migration/dirtyrate: Implement set_sample_page_period() and is_sample_period_valid()
Implement is_sample_period_valid() to check if the sample period is vaild and do set_sample_page_period() to sleep specific time between sample actions. Signed-off-by: Chuan Zheng <zhengchuan@huawei.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Reviewed-by: David Edmondson <david.edmondson@oracle.com> Reviewed-by: Li Qiang <liq3ea@gmail.com> Message-Id: <1600237327-33618-10-git-send-email-zhengchuan@huawei.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This commit is contained in:
parent
f82583cdc0
commit
eca582249c
2 changed files with 30 additions and 0 deletions
|
@ -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 is_sample_period_valid(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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue