From e52bd94c7ec14577381c6550e68f54ea255dffea Mon Sep 17 00:00:00 2001 From: Alexandre Derumier Date: Tue, 21 Aug 2012 12:21:54 +0200 Subject: [PATCH] live migration: reduce sleep when remaining memory is low Reduce sleep to 0.3s when remaining memory is lower than the average transfert in 1 iteration. Signed-off-by: Alexandre Derumier --- PVE/QemuMigrate.pm | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm index 3a8942b4..67c21af6 100644 --- a/PVE/QemuMigrate.pm +++ b/PVE/QemuMigrate.pm @@ -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";