Configure nova memory/hugepage reserves

Add per host overrides to nova chart to account for platform memory
reserve.  This will set nova config options:
reserved_huge_pages:  this is a multiline option per node/pagesize, e.g.
reserved_huge_pages = node:0,size:4,count:2816000
reserved_huge_pages = node:0,size:1048576,count:1
reserved_huge_pages = node:1,size:4,count:512000
reserved_huge_pages = node:1,size:1048576,count:1
- set 4K page reserve based on platform_reserved_mib
- set 2M or 1G page reserve based on vswitch hugepages
  allocation
reserved_host_memory: overall host memory reserved used by placement
service.  Includes both vswitch huge pages and platform reserved.

Story: 2003909
Task: 34262
Change-Id: I70ea22cb05e8a9ac0ba9e9d149a78d58d40f8f77
Signed-off-by: Gerry Kopec <gerry.kopec@windriver.com>
This commit is contained in:
Gerry Kopec 2019-06-20 00:48:50 -04:00
parent dd7ff62936
commit 177469ce6d
1 changed files with 24 additions and 0 deletions

View File

@ -438,6 +438,29 @@ class NovaHelm(openstack.OpenstackBaseHelm):
address_pool = self.dbapi.address_pool_get(cluster_host_network.pool_uuid)
return '%s/%s' % (str(address_pool.network), str(address_pool.prefix))
def _update_reserved_memory(self, host, default_config):
host_memory = self.dbapi.imemory_get_by_ihost(host.id)
reserved_pages = []
reserved_host_memory = 0
for cell in host_memory:
reserved_4K_pages = 'node:%d,size:4,count:%d' % (
cell.numa_node,
cell.platform_reserved_mib*constants.NUM_4K_PER_MiB)
reserved_pages.append(reserved_4K_pages)
# vswitch pages will be either 2M or 1G
reserved_vswitch_pages = 'node:%d,size:%d,count:%d' % (cell.numa_node,
cell.vswitch_hugepages_size_mib*constants.Ki,
cell.vswitch_hugepages_nr)
reserved_pages.append(reserved_vswitch_pages)
reserved_host_memory += cell.platform_reserved_mib
reserved_host_memory += cell.vswitch_hugepages_size_mib * cell.vswitch_hugepages_nr
multistring = self._oslo_multistring_override(
name='reserved_huge_pages', values=reserved_pages)
if multistring is not None:
default_config.update(multistring)
default_config.update({'reserved_host_memory_mb': reserved_host_memory})
def _get_per_host_overrides(self):
host_list = []
hosts = self.dbapi.ihost_get_list()
@ -457,6 +480,7 @@ class NovaHelm(openstack.OpenstackBaseHelm):
self._update_host_addresses(host, default_config, vnc_config,
libvirt_config)
self._update_host_pci_whitelist(host, pci_config)
self._update_reserved_memory(host, default_config)
host_nova = {
'name': hostname,
'conf': {