+ my $qemu_migrate_params = {};
+
+ # migrate speed can be set via bwlimit (datacenter.cfg and API) and via the
+ # migrate_speed parameter in qm.conf - take the lower of the two.
+ my $bwlimit = PVE::Storage::get_bandwidth_limit('migration', undef, $opt_bwlimit) // 0;
+ my $migrate_speed = $conf->{migrate_speed} // $bwlimit;
+ # migrate_speed is in MB/s, bwlimit in KB/s
+ $migrate_speed *= 1024;
+
+ $migrate_speed = ($bwlimit < $migrate_speed) ? $bwlimit : $migrate_speed;
+
+ # always set migrate speed (overwrite kvm default of 32m) we set a very high
+ # default of 8192m which is basically unlimited
+ $migrate_speed ||= ($defaults->{migrate_speed} || 8192) * 1024;
+
+ # qmp takes migrate_speed in B/s.
+ $migrate_speed *= 1024;
+ $self->log('info', "migration speed limit: $migrate_speed B/s");
+ $qemu_migrate_params->{'max-bandwidth'} = int($migrate_speed);
+
+ my $migrate_downtime = $defaults->{migrate_downtime};
+ $migrate_downtime = $conf->{migrate_downtime} if defined($conf->{migrate_downtime});
+ # migrate-set-parameters expects limit in ms
+ $migrate_downtime *= 1000;
+ $self->log('info', "migration downtime limit: $migrate_downtime ms");
+ $qemu_migrate_params->{'downtime-limit'} = int($migrate_downtime);
+