Add a new role for ComputeOvsDpdk and clean-up parameters
A new role ComputeOvsDpdk has been added to avoid manual roles_data creation. And cleaned-up the DPDK parameters inline with the refactored code. Change-Id: I16dac69609c98194c2504ff067258fa14363d4f1
This commit is contained in:
parent
c031108b9a
commit
c53918926e
@ -11,8 +11,8 @@ resource_registry:
|
||||
#ComputeParameters:
|
||||
#KernelArgs: ""
|
||||
#TunedProfileName: ""
|
||||
#HostIsolatedCoreList: ""
|
||||
#IsolCpusList: ""
|
||||
#ComputeOvsDpdkParameters:
|
||||
#KernelArgs: ""
|
||||
#TunedProfileName: ""
|
||||
#HostIsolatedCoreList: ""
|
||||
#KernelArgs: "intel_iommu=on iommu=pt default_hugepagesz=1GB hugepagesz=1G hugepages=60"
|
||||
#TunedProfileName: "cpu-partitioning"
|
||||
#IsolCpusList: ""
|
||||
|
@ -12,15 +12,23 @@ parameter_defaults:
|
||||
NeutronMechanismDrivers: 'opendaylight_v2'
|
||||
NeutronServicePlugins: 'odl-router_v2'
|
||||
NovaSchedulerDefaultFilters: "RamFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,NUMATopologyFilter"
|
||||
## Deploying DPDK requires enabling hugepages for the overcloud compute nodes.
|
||||
## It also requires enabling IOMMU when using the VFIO (vfio-pci) OvsDpdkDriverType.
|
||||
## This can be done using ComputeKernelArgs as shown below.
|
||||
ComputeParameters:
|
||||
#ComputeKernelArgs: "intel_iommu=on default_hugepagesz=2MB hugepagesz=2MB hugepages=2048"
|
||||
|
||||
ComputeOvsDpdkParameters:
|
||||
OvsEnableDpdk: True
|
||||
|
||||
## Host configuration Parameters
|
||||
#TunedProfileName: "cpu-partitioning"
|
||||
#IsolCpusList: "" # Logical CPUs list to be isolated from the host process (applied via cpu-partitioning tuned).
|
||||
# It is mandatory to provide isolated cpus for tuned to achive optimal performance.
|
||||
# Example: "3-8,12-15,18"
|
||||
#KernelArgs: "" # Space separated kernel args to configure hugepage and IOMMU.
|
||||
# Deploying DPDK requires enabling hugepages for the overcloud compute nodes.
|
||||
# It also requires enabling IOMMU when using the VFIO (vfio-pci) OvsDpdkDriverType.
|
||||
# This should be done by configuring parameters via host-config-and-reboot.yaml environment file.
|
||||
|
||||
## Attempting to deploy DPDK without appropriate values for the below parameters may lead to unstable deployments
|
||||
## due to CPU contention of DPDK PMD threads.
|
||||
OvsEnableDpdk: True
|
||||
## It is highly recommended to to enable isolcpus (via ComputeKernelArgs) on compute overcloud nodes and set the following parameters:
|
||||
## It is highly recommended to to enable isolcpus (via KernelArgs) on compute overcloud nodes and set the following parameters:
|
||||
#OvsDpdkSocketMemory: "" # Sets the amount of hugepage memory to assign per NUMA node.
|
||||
# It is recommended to use the socket closest to the PCIe slot used for the
|
||||
# desired DPDK NIC. Format should be comma separated per socket string such as:
|
||||
|
@ -1,25 +1,32 @@
|
||||
# A Heat environment that can be used to deploy DPDK with OVS
|
||||
# Deploying DPDK requires enabling hugepages for the overcloud nodes
|
||||
resource_registry:
|
||||
OS::TripleO::Services::ComputeNeutronOvsAgent: ../puppet/services/neutron-ovs-dpdk-agent.yaml
|
||||
OS::TripleO::Services::ComputeNeutronOvsDpdk: ../puppet/services/neutron-ovs-dpdk-agent.yaml
|
||||
|
||||
parameter_defaults:
|
||||
NeutronDatapathType: "netdev"
|
||||
NeutronVhostuserSocketDir: "/var/lib/vhost_sockets"
|
||||
NovaSchedulerDefaultFilters: "RamFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,NUMATopologyFilter"
|
||||
## Deploying DPDK requires enabling hugepages for the overcloud compute nodes.
|
||||
## It also requires enabling IOMMU when using the VFIO (vfio-pci) OvsDpdkDriverType.
|
||||
## This can be done using ComputeKernelArgs as shown below.
|
||||
#ComputeParameters:
|
||||
#ComputeKernelArgs: "intel_iommu=on default_hugepagesz=2MB hugepagesz=2MB hugepages=2048"
|
||||
OvsDpdkDriverType: "vfio-pci"
|
||||
|
||||
#ComputeOvsDpdkParameters:
|
||||
## Host configuration Parameters
|
||||
#TunedProfileName: "cpu-partitioning"
|
||||
#IsolCpusList: "" # Logical CPUs list to be isolated from the host process (applied via cpu-partitioning tuned).
|
||||
# It is mandatory to provide isolated cpus for tuned to achive optimal performance.
|
||||
# Example: "3-8,12-15,18"
|
||||
#KernelArgs: "" # Space separated kernel args to configure hugepage and IOMMU.
|
||||
# Deploying DPDK requires enabling hugepages for the overcloud compute nodes.
|
||||
# It also requires enabling IOMMU when using the VFIO (vfio-pci) OvsDpdkDriverType.
|
||||
# This should be done by configuring parameters via host-config-and-reboot.yaml environment file.
|
||||
|
||||
## Attempting to deploy DPDK without appropriate values for the below parameters may lead to unstable deployments
|
||||
## due to CPU contention of DPDK PMD threads.
|
||||
## It is highly recommended to to enable isolcpus (via ComputeKernelArgs) on compute overcloud nodes and set the following parameters:
|
||||
## It is highly recommended to to enable isolcpus (via KernelArgs) on compute overcloud nodes and set the following parameters:
|
||||
#OvsDpdkSocketMemory: "" # Sets the amount of hugepage memory to assign per NUMA node.
|
||||
# It is recommended to use the socket closest to the PCIe slot used for the
|
||||
# desired DPDK NIC. Format should be comma separated per socket string such as:
|
||||
# "<socket 0 mem MB>,<socket 1 mem MB>", for example: "1024,0".
|
||||
#OvsDpdkDriverType: "vfio-pci" # Ensure the Overcloud NIC to be used for DPDK supports this UIO/PMD driver.
|
||||
#OvsPmdCoreList: "" # List or range of CPU cores for PMD threads to be pinned to. Note, NIC
|
||||
# location to cores on socket, number of hyper-threaded logical cores, and
|
||||
# desired number of PMD threads can all play a role in configuring this setting.
|
||||
|
@ -14,12 +14,6 @@ parameters:
|
||||
ServiceNames:
|
||||
type: comma_delimited_list
|
||||
default: []
|
||||
IsolCpusList:
|
||||
default: "0"
|
||||
description: List of cores to be isolated by tuned
|
||||
type: string
|
||||
constraints:
|
||||
- allowed_pattern: "[0-9,-]+"
|
||||
OvsEnableDpdk:
|
||||
default: false
|
||||
description: Whether or not to configure enable DPDK in OVS
|
||||
@ -47,12 +41,6 @@ parameters:
|
||||
mem>, <socket n mem>", where the value is specified in MB. For example:
|
||||
"1024,0".
|
||||
type: string
|
||||
OvsDpdkDriverType:
|
||||
default: "vfio-pci"
|
||||
description: >
|
||||
DPDK Driver type. Ensure the Overcloud NIC to be used for DPDK supports
|
||||
this UIO/PMD driver.
|
||||
type: string
|
||||
OvsPmdCoreList:
|
||||
description: >
|
||||
A list or range of CPU cores for PMD threads to be pinned to. Note, NIC
|
||||
@ -91,10 +79,6 @@ parameters:
|
||||
default: ''
|
||||
description: Memory allocated for each socket
|
||||
type: string
|
||||
NeutronDpdkDriverType:
|
||||
default: "vfio-pci"
|
||||
description: DPDK Driver type
|
||||
type: string
|
||||
deployment_actions:
|
||||
default: ['CREATE', 'UPDATE']
|
||||
type: comma_delimited_list
|
||||
@ -105,15 +89,13 @@ parameters:
|
||||
|
||||
conditions:
|
||||
is_host_config_required: {not: {equals: [{get_param: [RoleParameters, KernelArgs]}, ""]}}
|
||||
# YAQL is enabled in conditions with https://review.openstack.org/#/c/467506/
|
||||
is_dpdk_config_required:
|
||||
or:
|
||||
- yaql:
|
||||
expression: $.data.service_names.contains('neutron_ovs_dpdk_agent')
|
||||
data:
|
||||
service_names: {get_param: ServiceNames}
|
||||
- {get_param: OvsEnableDpdk}
|
||||
- {get_param: [RoleParameters, OvsEnableDpdk]}
|
||||
expression: $.data.service_names.contains('neutron_ovs_dpdk_agent')
|
||||
data:
|
||||
service_names: {get_param: ServiceNames}
|
||||
- {equals: [{get_param: [RoleParameters, OvsEnableDpdk]}, true]}
|
||||
is_reboot_config_required:
|
||||
or:
|
||||
- is_host_config_required
|
||||
@ -122,8 +104,6 @@ conditions:
|
||||
pmd_cores_empty: {equals: [{get_param: OvsPmdCoreList}, '']}
|
||||
mem_channels_empty: {equals: [{get_param: OvsDpdkMemoryChannels}, '']}
|
||||
socket_mem_empty: {equals: [{get_param: OvsDpdkSocketMemory}, '']}
|
||||
driver_not_set: {equals: [{get_param: OvsDpdkDriverType}, 'vfio-pci']}
|
||||
isol_cpus_empty: {equals: [{get_param: IsolCpusList}, '0']}
|
||||
deployment_actions_empty:
|
||||
equals:
|
||||
- {get_param: deployment_actions}
|
||||
@ -137,19 +117,15 @@ resources:
|
||||
value:
|
||||
map_replace:
|
||||
- map_replace:
|
||||
- IsolCpusList: IsolCpusList
|
||||
OvsDpdkCoreList: OvsDpdkCoreList
|
||||
- OvsDpdkCoreList: OvsDpdkCoreList
|
||||
OvsDpdkMemoryChannels: OvsDpdkMemoryChannels
|
||||
OvsDpdkSocketMemory: OvsDpdkSocketMemory
|
||||
OvsDpdkDriverType: OvsDpdkDriverType
|
||||
OvsPmdCoreList: OvsDpdkCoreList
|
||||
OvsPmdCoreList: OvsPmdCoreList
|
||||
- values: {get_param: [RoleParameters]}
|
||||
- values:
|
||||
IsolCpusList: {if: [isol_cpus_empty, {get_param: HostCpusList}, {get_param: IsolCpusList}]}
|
||||
OvsDpdkCoreList: {if: [l_cores_empty, {get_param: HostCpusList}, {get_param: OvsDpdkCoreList}]}
|
||||
OvsDpdkMemoryChannels: {if: [mem_channels_empty, {get_param: NeutronDpdkMemoryChannels}, {get_param: OvsDpdkMemoryChannels}]}
|
||||
OvsDpdkSocketMemory: {if: [socket_mem_empty, {get_param: NeutronDpdkSocketMemory}, {get_param: OvsDpdkSocketMemory}]}
|
||||
OvsDpdkDriverType: {if: [driver_not_set, {get_param: NeutronDpdkDriverType}, {get_param: OvsDpdkDriverType}]}
|
||||
OvsPmdCoreList: {if: [pmd_cores_empty, {get_param: NeutronDpdkCoreList}, {get_param: OvsPmdCoreList}]}
|
||||
|
||||
HostParametersConfig:
|
||||
@ -243,7 +219,11 @@ resources:
|
||||
name: EnableDpdkDeployment
|
||||
server: {get_param: server}
|
||||
config: {get_resource: EnableDpdkConfig}
|
||||
actions: ['CREATE'] # Only do this on CREATE
|
||||
actions:
|
||||
if:
|
||||
- deployment_actions_empty
|
||||
- []
|
||||
- ['CREATE'] # Only do this on CREATE
|
||||
|
||||
RebootConfig:
|
||||
type: OS::Heat::SoftwareConfig
|
||||
|
@ -161,6 +161,7 @@ resource_registry:
|
||||
OS::TripleO::Services::NeutronOvsAgent: puppet/services/neutron-ovs-agent.yaml
|
||||
OS::TripleO::Services::NeutronLinuxbridgeAgent: OS::Heat::None
|
||||
OS::TripleO::Services::ComputeNeutronOvsAgent: puppet/services/neutron-ovs-agent.yaml
|
||||
OS::TripleO::Services::ComputeNeutronOvsDpdk: OS::Heat::None
|
||||
OS::TripleO::Services::Pacemaker: OS::Heat::None
|
||||
OS::TripleO::Services::PacemakerRemote: OS::Heat::None
|
||||
OS::TripleO::Services::NeutronSriovAgent: OS::Heat::None
|
||||
|
@ -0,0 +1,4 @@
|
||||
---
|
||||
features:
|
||||
- A new role ComputeOvsDpdk has been added to enable dynamic roles_data
|
||||
creation with OVS-DPDK role.
|
41
roles/ComputeOvsDpdk.yaml
Normal file
41
roles/ComputeOvsDpdk.yaml
Normal file
@ -0,0 +1,41 @@
|
||||
###############################################################################
|
||||
# Role: ComputeOvsDpdk #
|
||||
###############################################################################
|
||||
- name: ComputeOvsDpdk
|
||||
description: |
|
||||
Compute OvS DPDK Role
|
||||
CountDefault: 1
|
||||
networks:
|
||||
- InternalApi
|
||||
- Tenant
|
||||
- Storage
|
||||
HostnameFormatDefault: '%stackname%-computeovsdpdk-%index%'
|
||||
disable_upgrade_deployment: True
|
||||
ServicesDefault:
|
||||
- OS::TripleO::Services::AuditD
|
||||
- OS::TripleO::Services::CACerts
|
||||
- OS::TripleO::Services::CephClient
|
||||
- OS::TripleO::Services::CephExternal
|
||||
- OS::TripleO::Services::CertmongerUser
|
||||
- OS::TripleO::Services::Collectd
|
||||
- OS::TripleO::Services::ComputeCeilometerAgent
|
||||
- OS::TripleO::Services::ComputeNeutronCorePlugin
|
||||
- OS::TripleO::Services::ComputeNeutronL3Agent
|
||||
- OS::TripleO::Services::ComputeNeutronMetadataAgent
|
||||
- OS::TripleO::Services::ComputeNeutronOvsDpdk
|
||||
- OS::TripleO::Services::Docker
|
||||
- OS::TripleO::Services::FluentdClient
|
||||
- OS::TripleO::Services::Iscsid
|
||||
- OS::TripleO::Services::Kernel
|
||||
- OS::TripleO::Services::MySQLClient
|
||||
- OS::TripleO::Services::NovaCompute
|
||||
- OS::TripleO::Services::NovaLibvirt
|
||||
- OS::TripleO::Services::Ntp
|
||||
- OS::TripleO::Services::OpenDaylightOvs
|
||||
- OS::TripleO::Services::Securetty
|
||||
- OS::TripleO::Services::SensuClient
|
||||
- OS::TripleO::Services::Snmp
|
||||
- OS::TripleO::Services::Sshd
|
||||
- OS::TripleO::Services::Timezone
|
||||
- OS::TripleO::Services::TripleoFirewall
|
||||
- OS::TripleO::Services::TripleoPackages
|
@ -95,6 +95,7 @@ Example
|
||||
BlockStorage
|
||||
CephStorage
|
||||
Compute
|
||||
ComputeOvsDpdk
|
||||
Controller
|
||||
ControllerOpenstack
|
||||
Database
|
||||
|
Loading…
Reference in New Issue
Block a user