HV_DEVICE_MODEL = "device_model"
HV_INIT_SCRIPT = "init_script"
HV_MIGRATION_PORT = "migration_port"
+HV_MIGRATION_BANDWIDTH = "migration_bandwidth"
+HV_MIGRATION_DOWNTIME = "migration_downtime"
HV_USE_LOCALTIME = "use_localtime"
HV_DISK_CACHE = "disk_cache"
HV_SECURITY_MODEL = "security_model"
HV_DEVICE_MODEL: VTYPE_STRING,
HV_INIT_SCRIPT: VTYPE_STRING,
HV_MIGRATION_PORT: VTYPE_INT,
+ HV_MIGRATION_BANDWIDTH: VTYPE_INT,
+ HV_MIGRATION_DOWNTIME: VTYPE_INT,
HV_USE_LOCALTIME: VTYPE_BOOL,
HV_DISK_CACHE: VTYPE_STRING,
HV_SECURITY_MODEL: VTYPE_STRING,
HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
HV_USB_MOUSE: '',
HV_MIGRATION_PORT: 8102,
+ HV_MIGRATION_BANDWIDTH: 32, # MiB/s
+ HV_MIGRATION_DOWNTIME: 30, # ms
HV_USE_LOCALTIME: False,
HV_DISK_CACHE: HT_CACHE_DEFAULT,
HV_SECURITY_MODEL: HT_SM_NONE,
HVC_GLOBALS = frozenset([
HV_MIGRATION_PORT,
+ HV_MIGRATION_BANDWIDTH,
])
BEC_DEFAULTS = {
constants.HV_USB_MOUSE:
hv_base.ParamInSet(False, constants.HT_KVM_VALID_MOUSE_TYPES),
constants.HV_MIGRATION_PORT: hv_base.NET_PORT_CHECK,
+ constants.HV_MIGRATION_BANDWIDTH: hv_base.NO_CHECK,
+ constants.HV_MIGRATION_DOWNTIME: hv_base.NO_CHECK,
constants.HV_USE_LOCALTIME: hv_base.NO_CHECK,
constants.HV_DISK_CACHE:
hv_base.ParamInSet(True, constants.HT_VALID_CACHE_TYPES),
if not live:
self._CallMonitorCommand(instance_name, 'stop')
+ migrate_command = ('migrate_set_speed %dm' %
+ instance.hvparams[constants.HV_MIGRATION_BANDWIDTH])
+ self._CallMonitorCommand(instance_name, migrate_command)
+
+ migrate_command = ('migrate_set_downtime %dms' %
+ instance.hvparams[constants.HV_MIGRATION_DOWNTIME])
+ self._CallMonitorCommand(instance_name, migrate_command)
+
migrate_command = 'migrate -d tcp:%s:%s' % (target, port)
self._CallMonitorCommand(instance_name, migrate_command)
</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term>migration_bandwidth</term>
+ <listitem>
+ <simpara>Valid for the KVM hypervisor.</simpara>
+
+ <para>
+ This option specifies the maximum bandwidth that KVM will
+ use for instance live migrations. The value is in MiB/s.
+ </para>
+
+ <simpara>This option is only effective with kvm versions >= 78
+ and qemu-kvm versions >= 0.10.0.
+ </simpara>
+ </listitem>
+ </varlistentry>
</variablelist>
</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term>migration_downtime</term>
+ <listitem>
+ <simpara>Valid for the KVM hypervisor.</simpara>
+
+ <simpara>The maximum amount of time (in ms) a KVM instance is
+ allowed to be frozen during a live migration, in order to copy
+ dirty memory pages. Default value is 30ms, but you may need to
+ increase this value for busy instances.
+ </simpara>
+
+ <simpara>This option is only effective with kvm versions >= 87
+ and qemu-kvm versions >= 0.11.0.
+ </simpara>
+
+ </listitem>
+ </varlistentry>
+
</variablelist>
</para>