|
From: | Chegu Vinod |
Subject: | Re: [Qemu-devel] [PATCH v7 3/3] Force auto-convegence of live migration |
Date: | Mon, 24 Jun 2013 06:08:53 -0700 |
User-agent: | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130509 Thunderbird/17.0.6 |
On 6/24/2013 6:01 AM, Paolo Bonzini wrote:
One nit and one question: Il 23/06/2013 22:11, Chegu Vinod ha scritto:@@ -404,6 +413,23 @@ static void migration_bitmap_sync(void)/* more than 1 second = 1000 millisecons */if (end_time > start_time + 1000) { + if (migrate_auto_converge()) { + /* The following detection logic can be refined later. For now: + Check to see if the dirtied bytes is 50% more than the approx. + amount of bytes that just got transferred since the last time we + were in this routine. If that happens >N times (for now N==4) + we turn on the throttle down logic */ + bytes_xfer_now = ram_bytes_transferred(); + if (s->dirty_pages_rate && + (num_dirty_pages_period * TARGET_PAGE_SIZE > + (bytes_xfer_now - bytes_xfer_prev)/2) && + (dirty_rate_high_cnt++ > 4)) { + trace_migration_throttle(); + mig_throttle_on = true; + dirty_rate_high_cnt = 0; + } + bytes_xfer_prev = bytes_xfer_now; + }Missing: else { mig_throttle_on = false; }
Ok.
+/* Stub function that's gets run on the vcpu when its brought out of the + VM to run inside qemu via async_run_on_cpu()*/ +static void mig_sleep_cpu(void *opq) +{ + qemu_mutex_unlock_iothread(); + g_usleep(30*1000); + qemu_mutex_lock_iothread(); +} + + /* If it has been more than 40 ms since the last time the guest + * was throttled then do it again. + */ + if (40 < (t1-t0)/1000000) {You're stealing 75% of the CPU time, isn't that a lot?
Depends on the dirty rate vs. transfer rate... I had tried 50% too and it took much longer for the migration to converge.
Vinod
+ mig_throttle_guest_down(); + t0 = t1; + } +}Paolo .
[Prev in Thread] | Current Thread | [Next in Thread] |