qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v7 3/3] Force auto-convegence of live migration


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

.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]