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
This commit is contained in:
Rajesh Tailor 2019-01-10 13:14:36 +05:30
parent 9fd11d13a7
commit 429cccca35
4 changed files with 66 additions and 0 deletions

View File

@ -38,6 +38,7 @@ class nova::conductor(
include ::nova::deps
include ::nova::db
include ::nova::params
include ::nova::workarounds
nova::generic_service { 'conductor':
enabled => $enabled,

20
manifests/workarounds.pp Normal file
View File

@ -0,0 +1,20 @@
# == Class: nova::workarounds
#
# nova workarounds configuration
#
# === Parameters:
#
# [*enable_numa_live_migration*]
# (optional) Whether to enable live migration for NUMA topology instances.
# Defaults to false
#
class nova::workarounds (
$enable_numa_live_migration = false,
) {
nova_config {
'workarounds/enable_numa_live_migration': value => $enable_numa_live_migration;
}
}

View File

@ -0,0 +1,9 @@
---
upgrade:
- |
Add support to enable/disable live-migration for NUMA topology instances
Add configuration parameter `workarounds/enable_numa_live_migration`
(defaults to false) which allows to enable/disable live-migration
for NUMA topology instances.

View File

@ -0,0 +1,36 @@
require 'spec_helper'
describe 'nova::workarounds' do
let :params do
{}
end
shared_examples 'nova::workarounds' do
context 'with default parameters' do
it { is_expected.to contain_nova_config('workarounds/enable_numa_live_migration').with_value(false) }
end
context 'with overridden parameters' do
let :params do
{ :enable_numa_live_migration => true,}
end
it { is_expected.to contain_nova_config('workarounds/enable_numa_live_migration').with_value('true') }
end
end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
it_configures 'nova::workarounds'
end
end
end