]> git.proxmox.com Git - qemu-server.git/commitdiff
live migration: reduce sleep when remaining memory is low
authorAlexandre Derumier <aderumier@odiso.com>
Tue, 21 Aug 2012 10:21:54 +0000 (12:21 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Thu, 23 Aug 2012 05:37:59 +0000 (07:37 +0200)
Reduce sleep to 0.3s when remaining memory is lower than the average transfert in 1 iteration.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
PVE/QemuMigrate.pm

index 3a8942b42fa7e852f2a7948971dffa339e01998f..67c21af648f739b72395e81c583668d2a4ef3f41 100644 (file)
@@ -9,6 +9,7 @@ use PVE::INotify;
 use PVE::Cluster;
 use PVE::Storage;
 use PVE::QemuServer;
+use Time::HiRes qw( usleep );
 
 use base qw(PVE::AbstractMigrate);
 
@@ -330,8 +331,13 @@ sub phase2 {
     my $merr = $@;
 
     my $lstat = 0;
+    my $usleep = 2000000;
+    my $i = 0;
     while (1) {
-       sleep (2);
+       $i++;
+       my $avglstat = $lstat/$i if $lstat;
+
+       usleep ($usleep);
        my $stat = PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "query-migrate");
        if ($stat->{status} =~ m/^(active|completed|failed|cancelled)$/im) {
            $merr = undef;
@@ -357,13 +363,15 @@ sub phase2 {
                my $trans = $stat->{ram}->{transferred} || 0;
                my $rem = $stat->{ram}->{remaining} || 0;
                my $total = $stat->{ram}->{total} || 0;
+               #reduce sleep if remainig memory if lower than the everage transfert 
+               $usleep = 300000 if $rem < $avglstat;
 
                $self->log('info', "migration status: $stat->{status} (transferred ${trans}, " .
                           "remaining ${rem}), total ${total})");
            }
 
            $lstat = $stat->{ram}->{transferred};
-
+           
        } else {
            die $merr if $merr;
            die "unable to parse migration status '$stat->{status}' - aborting\n";