Patchwork Stalls on Live Migration of VMs with a lot of memory

login
register
mail settings
Submitter Peter Lieven
Date Jan. 4, 2012, 2:21 p.m.
Message ID <4F046084.3080104@dlh.net>
Download mbox | patch
Permalink /patch/134264/
State New
Headers show

Comments

Peter Lieven - Jan. 4, 2012, 2:21 p.m.
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.

      if (ret < 0) {

Patch

--- 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 */
+        }
      }