Merge "Live migration optimization with HP"

This commit is contained in:
Zuul 2021-01-27 00:40:49 +00:00 committed by Gerrit Code Review
commit c488d97b55
2 changed files with 65 additions and 1 deletions

View File

@ -373,6 +373,26 @@ parameters:
description: Whether to wait for `network-vif-plugged` events before starting guest transfer.
default: true
type: boolean
NovaLiveMigrationPermitPostCopy:
description: Wether to switch the VM active on destination node before migration is complete,
therefore ensuring an upper bound on the memory that needs to be transferred.
default: ''
type: string
constraints:
- allowed_values: [ '', 'true', 'True', 'TRUE', 'false', 'False', 'FALSE']
tags:
- role_specific
NovaLiveMigrationPermitAutoConverge:
description: Auto converge will throttles down CPU if a progress of on-going live migration is
slow. Auto converge will only be used if this flag is set to True and post copy is
not permitted or post copy is unavailable due to the version of libvirt and QEMU
in use.
default: ''
type: string
constraints:
- allowed_values: [ '', 'true', 'True', 'TRUE', 'false', 'False', 'FALSE']
tags:
- role_specific
MultipathdEnable:
default: false
description: Whether to enable the multipath daemon
@ -635,6 +655,8 @@ resources:
nova_compute_opt_env_vars: NovaComputeOptEnvVars
nova::workarounds::never_download_image_if_on_rbd: NovaDisableImageDownloadToRbd
nova::compute::image_type_exclude_list: NovaImageTypeExcludeList
nova_permit_post_copy: NovaLiveMigrationPermitPostCopy
nova_permit_auto_converge: NovaLiveMigrationPermitAutoConverge
- values: {get_param: [RoleParameters]}
- values:
NovaVcpuPinSet: {get_param: NovaVcpuPinSet}
@ -720,7 +742,8 @@ resources:
NovaComputeOptEnvVars: {get_param: NovaComputeOptEnvVars}
NovaDisableImageDownloadToRbd: {get_param: NovaDisableImageDownloadToRbd}
NovaImageTypeExcludeList: {get_param: NovaImageTypeExcludeList}
NovaLiveMigrationPermitPostCopy: {get_param: NovaLiveMigrationPermitPostCopy}
NovaLiveMigrationPermitAutoConverge: {get_param: NovaLiveMigrationPermitAutoConverge}
conditions:
enable_instance_ha: {equals: [{get_param: EnableInstanceHA}, true]}
@ -769,6 +792,18 @@ conditions:
- equals: [{get_param: [RoleParameters, OvsDpdkSocketMemory]}, ""]
- equals: [{get_param: OvsDpdkSocketMemory}, ""]
permit_post_copy_set:
not:
and:
- equals: [{get_param: [RoleParameters, NovaLiveMigrationPermitPostCopy]}, '']
- equals: [{get_param: NovaLiveMigrationPermitPostCopy}, '']
permit_auto_converge_set:
not:
and:
- equals: [{get_param: [RoleParameters, NovaLiveMigrationPermitAutoConverge]}, '']
- equals: [{get_param: NovaLiveMigrationPermitAutoConverge}, '']
outputs:
role_data:
description: Role data for the Nova Compute service.
@ -830,6 +865,27 @@ outputs:
nova::compute::instance_usage_audit_period: 'hour'
nova::compute::consecutive_build_service_disable_threshold: {get_param: NovaAutoDisabling}
nova::compute::live_migration_wait_for_vif_plug: {get_param: NovaLiveMigrationWaitForVIFPlug}
nova::migration::live_migration_permit_post_copy:
if:
- permit_post_copy_set
- contains:
- {get_attr: [RoleParametersValue, value, nova_permit_post_copy]}
- ["TRUE", "true", "True"]
- if:
- reserved_huge_pages_set
- true
- false
nova::migration::live_migration_permit_auto_converge:
if:
- permit_auto_converge_set
- contains:
- {get_attr: [RoleParametersValue, value, nova_permit_auto_converge]}
- ["TRUE", "true", "True"]
- if:
- reserved_huge_pages_set
- true
- false
# TUNNELLED mode provides a security improvement for migration, but
# can't be used in combination with block migration. So we only enable it
# when shared storage is available (Ceph RDB is currently the only option).

View File

@ -0,0 +1,8 @@
---
features:
- |
When a node has hugepages enabled, we can help with live migrations by
enabling `NovaLiveMigrationPermitPostCopy` and
`NovaLiveMigrationPermitAutoConverge`. These flags are automatically
enabled if hugepages are detected, but operators can override these
settings.