puppet-nova/manifests/conductor.pp
Rajesh Tailor 429cccca35 Fail to live migration if instance has NUMA topology
Live migration is currently totally broken if a NUMA topology is
present. This affects everything that's been regrettably stuffed in with
NUMA topology including CPU pinning, hugepage support and emulator
thread support. Side effects can range from simple unexpected
performance hits (due to instances running on the same cores) to
complete failures (due to instance cores or huge pages being mapped to
CPUs/NUMA nodes that don't exist on the destination host).

Until such a time as we resolve these issues, we should alert users to
the fact that such issues exist. A workaround option is provided for
operators that _really_ need the broken behavior, but it's defaulted to
False to highlight the brokenness of this feature to unsuspecting
operators.

The related nova change is I217fba9138132b107e9d62895d699d238392e761

The proposed change exposes the 'enable_numa_live_migration'
workarounds option for TripleO deployment. By default this feature will be
disabled for NUMA topology instances.

Change-Id: I16794fbfef0e6e83d3fcebb9e6bc2fcf478ebf72
2019-02-14 14:15:30 +05:30

61 lines
1.6 KiB
Puppet

# == Class: nova::conductor
#
# Manages nova conductor package and service
#
# === Parameters:
#
# [*enabled*]
# (optional) Whether to enable the nova-conductor service
# Defaults to true
#
# [*manage_service*]
# (optional) Whether to start/stop the service
# Defaults to true
#
# [*ensure_package*]
# (optional) The state of the nova conductor package
# Defaults to 'present'
#
# [*workers*]
# (optional) Number of workers for OpenStack Conductor service
# Defaults to $::os_workers
#
# [*enable_new_services*]
# (optional) When a new service (for example "nova-compute") start up, it gets
# registered in the database as an enabled service. Setting this to false will
# cause new services to be disabled when added. This config option is only used
# by the conductor service which is responsible for creating the service entries.
# Defaults to $::os_service_default
#
class nova::conductor(
$enabled = true,
$manage_service = true,
$ensure_package = 'present',
$workers = $::os_workers,
$enable_new_services = $::os_service_default,
) {
include ::nova::deps
include ::nova::db
include ::nova::params
include ::nova::workarounds
nova::generic_service { 'conductor':
enabled => $enabled,
manage_service => $manage_service,
package_name => $::nova::params::conductor_package_name,
service_name => $::nova::params::conductor_service_name,
ensure_package => $ensure_package,
}
if $workers {
nova_config {
'conductor/workers': value => $workers;
}
}
nova_config {
'DEFAULT/enable_new_services': value => $enable_new_services
}
}