[pve-devel] [PATCH V2] - fix setting migration parameters

Alexandre DERUMIER aderumier at odiso.com
Thu Dec 27 02:57:52 CET 2012


somes comments:

>> - default => 1, 
>> + default => 0, 

Not sure about  "lower default migration downtime value to 0",

because 0 downtime is nearly impossible to target. 

Default qemu value is 0.030, so maybe can we simply remove
   
- default => 0, 

and don't send any qmp command by default.



>>+ PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "migrate_set_downtime", value => $migrate_downtime*1); 
>>+ PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "migrate_set_speed", value => $migrate_speed*1); 
try

+ PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "migrate_set_downtime", value => int($migrate_downtime)); 
+ PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "migrate_set_speed", value => int($migrate_speed)); 
 (more clean)


----- Mail original ----- 

De: "Stefan Priebe" <s.priebe at profihost.ag> 
À: pve-devel at pve.proxmox.com 
Envoyé: Mercredi 26 Décembre 2012 23:17:56 
Objet: [pve-devel] [PATCH V2] - fix setting migration parameters 

- move migration speed/downtime from QemuServer vm_start to 
QemuMigrate phase2 
- lower default migration downtime value to 0 

--- 
PVE/QemuMigrate.pm | 30 ++++++++++++++++++++++++++---- 
PVE/QemuServer.pm | 17 +---------------- 
2 files changed, 27 insertions(+), 20 deletions(-) 

diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm 
index 0711681..af8813c 100644 
--- a/PVE/QemuMigrate.pm 
+++ b/PVE/QemuMigrate.pm 
@@ -323,24 +323,46 @@ sub phase2 { 
$self->{tunnel} = $self->fork_tunnel($self->{nodeip}, $lport, $rport); 

$self->log('info', "starting online/live migration on port $lport"); 
- # start migration 

- my $start = time(); 
+ # load_defaults 
+ my $defaults = PVE::QemuServer::load_defaults(); 
+ 
+ # always set migrate speed (overwrite kvm default of 32m) 
+ # we set a very hight default of 8192m which is basically unlimited 
+ my $migrate_speed = $defaults->{migrate_speed} || 8192; 
+ $migrate_speed = $conf->{migrate_speed} || $migrate_speed; 
+ $migrate_speed = $migrate_speed * 1048576; 
+ $self->log('info', "migrate_set_speed: $migrate_speed"); 
+ eval { 
+ # *1 ensures that JSON module convert the value to number 
+ PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "migrate_set_speed", value => $migrate_speed*1); 
+ }; 
+ $self->log('info', "migrate_set_speed error: $@") if $@; 
+ 
+ my $migrate_downtime = $defaults->{migrate_downtime}; 
+ $migrate_downtime = $conf->{migrate_downtime} if defined($conf->{migrate_downtime}); 
+ $self->log('info', "migrate_set_downtime: $migrate_downtime"); 
+ eval { 
+ # *1 ensures that JSON module convert the value to number 
+ PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "migrate_set_downtime", value => $migrate_downtime*1); 
+ }; 
+ $self->log('info', "migrate_set_downtime error: $@") if $@; 

my $capabilities = {}; 
$capabilities->{capability} = "xbzrle"; 
$capabilities->{state} = JSON::false; 
- 
eval { 
PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "migrate-set-capabilities", capabilities => [$capabilities]); 
}; 

- #set cachesize 10% of the total memory 
+ # set cachesize 10% of the total memory 
my $cachesize = int($conf->{memory}*1048576/10); 
eval { 
PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "migrate-set-cache-size", value => $cachesize); 
}; 

+ # start migration 
+ my $start = time(); 
eval { 
PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "migrate", uri => "tcp:localhost:$lport"); 
}; 
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm 
index 1d4c275..bb7fd16 100644 
--- a/PVE/QemuServer.pm 
+++ b/PVE/QemuServer.pm 
@@ -385,7 +385,7 @@ EODESCR 
type => 'integer', 
description => "Set maximum tolerated downtime (in seconds) for migrations.", 
minimum => 0, 
- default => 1, 
+ default => 0, 
}, 
cdrom => { 
optional => 1, 
@@ -2979,21 +2979,6 @@ sub vm_start { 
warn $@ if $@; 
} 

- # always set migrate speed (overwrite kvm default of 32m) 
- # we set a very hight default of 8192m which is basically unlimited 
- my $migrate_speed = $defaults->{migrate_speed} || 8192; 
- $migrate_speed = $conf->{migrate_speed} || $migrate_speed; 
- $migrate_speed = $migrate_speed * 1048576; 
- eval { 
- vm_mon_cmd_nocheck($vmid, "migrate_set_speed", value => $migrate_speed); 
- }; 
- 
- my $migrate_downtime = $defaults->{migrate_downtime}; 
- $migrate_downtime = $conf->{migrate_downtime} if defined($conf->{migrate_downtime}); 
- if (defined($migrate_downtime)) { 
- eval { vm_mon_cmd_nocheck($vmid, "migrate_set_downtime", value => $migrate_downtime); }; 
- } 
- 
if($migratedfrom) { 
my $capabilities = {}; 
$capabilities->{capability} = "xbzrle"; 
-- 
1.7.10.4 

_______________________________________________ 
pve-devel mailing list 
pve-devel at pve.proxmox.com 
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel 



More information about the pve-devel mailing list