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

Stefan Priebe - Profihost AG s.priebe at profihost.ag
Thu Dec 27 07:21:19 CET 2012


Hi,

Am 27.12.2012 um 02:57 schrieb Alexandre DERUMIER <aderumier at odiso.com>:

> 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.

That's ok / fine and works for me too.


> 
> 
> 
>>> + 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