mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
Set qemu migration speed unlimited when migrating to file
The qemu migration speed default is 32MiB/s as defined in migration.c /* Migration speed throttling */ static int64_t max_throttle = (32 << 20); There's no need to throttle migration when targeting a file, so set migration speed to unlimited prior to migration, and restore to libvirt default value after migration. Default units is MB for migrate_set_speed monitor command, so (INT64_MAX / (1024 * 1024)) is used for unlimited migration speed. Tested with both json and text monitors.
This commit is contained in:
parent
8fc40c511c
commit
ef1065cf5a
@ -2718,6 +2718,16 @@ qemuMigrationToFile(struct qemud_driver *driver, virDomainObjPtr vm,
|
|||||||
bool restoreLabel = false;
|
bool restoreLabel = false;
|
||||||
virCommandPtr cmd = NULL;
|
virCommandPtr cmd = NULL;
|
||||||
int pipeFD[2] = { -1, -1 };
|
int pipeFD[2] = { -1, -1 };
|
||||||
|
unsigned long saveMigBandwidth = priv->migMaxBandwidth;
|
||||||
|
|
||||||
|
/* Increase migration bandwidth to unlimited since target is a file.
|
||||||
|
* Failure to change migration speed is not fatal. */
|
||||||
|
if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) {
|
||||||
|
qemuMonitorSetMigrationSpeed(priv->mon,
|
||||||
|
QEMU_DOMAIN_FILE_MIG_BANDWIDTH_MAX);
|
||||||
|
priv->migMaxBandwidth = QEMU_DOMAIN_FILE_MIG_BANDWIDTH_MAX;
|
||||||
|
qemuDomainObjExitMonitorWithDriver(driver, vm);
|
||||||
|
}
|
||||||
|
|
||||||
if (qemuCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD) &&
|
if (qemuCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD) &&
|
||||||
(!compressor || pipe(pipeFD) == 0)) {
|
(!compressor || pipe(pipeFD) == 0)) {
|
||||||
@ -2829,6 +2839,13 @@ qemuMigrationToFile(struct qemud_driver *driver, virDomainObjPtr vm,
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
|
/* Restore max migration bandwidth */
|
||||||
|
if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) {
|
||||||
|
qemuMonitorSetMigrationSpeed(priv->mon, saveMigBandwidth);
|
||||||
|
priv->migMaxBandwidth = saveMigBandwidth;
|
||||||
|
qemuDomainObjExitMonitorWithDriver(driver, vm);
|
||||||
|
}
|
||||||
|
|
||||||
VIR_FORCE_CLOSE(pipeFD[0]);
|
VIR_FORCE_CLOSE(pipeFD[0]);
|
||||||
VIR_FORCE_CLOSE(pipeFD[1]);
|
VIR_FORCE_CLOSE(pipeFD[1]);
|
||||||
virCommandFree(cmd);
|
virCommandFree(cmd);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user