This reduce guest cpu speed if dirtied bytes is 50% more than the approx.amount 
of bytes that just got transferred since the last time we were in this routine.

qemu commit :
http://git.qemu.org/?p=qemu.git;a=commit;h=bde1e2ec2176c363c1783bf8887b6b1beb08dfee

tested with "stress -m 2 -c 2" under debian

without autoconvergence : downtime 12s - duration 12min
with autoconvergence : downtime 2s - duration 4min

Signed-off-by: Alexandre Derumier <[email protected]>
---
 PVE/QemuMigrate.pm |   12 ++++++++----
 PVE/QemuServer.pm  |   15 +++++++++++----
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm
index d980f0b..a6c0ada 100644
--- a/PVE/QemuMigrate.pm
+++ b/PVE/QemuMigrate.pm
@@ -385,12 +385,16 @@ sub phase2 {
        $self->log('info', "migrate_set_downtime error: $@") if $@;
     }
 
-    my $capabilities = {};
-    $capabilities->{capability} =  "xbzrle";
-    $capabilities->{state} = JSON::false;
+    my $capability = {};
+    my $capability2 = {};
+
+    $capability->{capability} =  "xbzrle";
+    $capability->{state} = JSON::false;
+    $capability2->{capability} =  "auto-converge";
+    $capability2->{state} = JSON::true;
 
     eval {
-       PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "migrate-set-capabilities", 
capabilities => [$capabilities]);
+       PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "migrate-set-capabilities", 
capabilities => [ $capability, $capability2 ]);
     };
 
     #set cachesize 10% of the total memory
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index a5576a6..ffad5f2 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -3160,10 +3160,17 @@ sub vm_start {
        }
 
        if ($migratedfrom) {
-           my $capabilities = {};
-           $capabilities->{capability} =  "xbzrle";
-           $capabilities->{state} = JSON::true;
-           eval { vm_mon_cmd_nocheck($vmid, "migrate-set-capabilities", 
capabilities => [$capabilities]); };
+           my $capability = {};
+           my $capability2 = {};
+
+           $capability->{capability} =  "xbzrle";
+           $capability->{state} = JSON::false;
+           $capability2->{capability} =  "auto-converge";
+           $capability2->{state} = JSON::true;
+
+           eval {
+               PVE::QemuServer::vm_mon_cmd_nocheck($vmid, 
"migrate-set-capabilities", capabilities => [ $capability, $capability2 ]);
+           };
            warn $@ if $@;
            
            if ($spice_port) {
-- 
1.7.10.4

_______________________________________________
pve-devel mailing list
[email protected]
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to