On 04.01.2012 15:14, Paolo Bonzini wrote:
On 01/04/2012 02:08 PM, Peter Lieven wrote:

thus my only option at the moment is to limit the runtime of the while
loop in stage 2 or
are there any post 1.0 patches in git that might already help?

No; even though (as I said) people are aware of the problems and do plan to fix them, don't hold your breath. :(
ok, just for the record. if someone wants the time limit patch for the while loop in stage 2 (which solves the problem for me) and after some tweaking is able to provide a throughput of approx. 450MB/s in my case, i attached it. it also solves the case that due to a lot of dups the rate_limit does not kick in and end the while loop.

--- qemu-kvm-1.0/arch_init.c.orig    2012-01-04 14:21:02.000000000 +0100
+++ qemu-kvm-1.0/arch_init.c    2012-01-04 14:27:34.000000000 +0100
@@ -301,6 +301,8 @@
     bytes_transferred_last = bytes_transferred;
     bwidth = qemu_get_clock_ns(rt_clock);

+    int pages_read = 0;
+
     while ((ret = qemu_file_rate_limit(f)) == 0) {
         int bytes_sent;

@@ -309,6 +311,11 @@
         if (bytes_sent == 0) { /* no more blocks */
             break;
         }
+        if (!(++pages_read & 0xff)) {
+ if ((qemu_get_clock_ns(rt_clock) - bwidth) > migrate_max_downtime()) + break; /* we have spent more than allowed downtime in this iteration */
+        }
     }

     if (ret < 0) {


Reply via email to