第 9 章 配置 OVS-DPDK 部署
本节在 Red Hat OpenStack Platform 环境中部署 OVS-DPDK。overcloud 通常由预定义角色的节点组成,如 Controller 节点、计算节点和不同的存储节点类型。这些默认角色各自包含 director 节点上的核心 heat 模板中定义的一组服务。
下图显示了一个 OVS-DPDK 拓扑,其 control plane 和数据平面有两个绑定端口:
图 9.1. OVS-DPDK 拓扑示例
本指南提供了与拓扑和用例不同的 CPU 分配、内存分配和 NIC 配置的示例。有关硬件和配置选项的更多信息,请参阅 NFV 的硬件要求。
9.1. 使用工作流划分 DPDK 参数
该功能在此发行版本中作为技术预览提供,因此不享有红帽的全面支持。它只应用于测试,不应部署在生产环境中。有关技术预览功能的更多信息,请参阅覆盖范围详细信息。
有关 DPDK 的 Mistral 工作流的概述,请参阅 工作流和派生参数。
先决条件
您必须有裸机内省,包括启用了硬件检查额外(inspection_extras
)来提供此工作流检索的数据。硬件检查额外功能会被默认启用。有关节点硬件的更多信息,请参阅创建裸机节点硬件清单。
定义 DPDK 的工作流和输入参数
以下列表概述了您可以提供给 OVS-DPDK 工作流的输入参数:
- num_phy_cores_per_numa_node_for_pmd
- 此输入参数指定与 DPDK NIC 关联的 NUMA 节点所需的最小内核数。为其他没有与 DPDK NIC 关联的 NUMA 节点分配物理内核。确保此参数设置为 1。
- huge_page_allocation_percentage
-
此输入参数指定了内存总量所需的百分比,不包括
NovaReservedHostMemory
,它们可以配置为巨页。KernelArgs
参数使用根据指定的huge_page_allocation_percentage
计算的巨页。确保此参数设为 50。
工作流从这些输入参数和裸机内省详情计算适当的 DPDK 参数值。
为 DPDK 定义工作流和输入参数:
将
usr/share/openstack-tripleo-heat-templates/plan-environment-derived-params.yaml
文件复制到本地目录,并设置输入参数以适合您的环境。workflow_parameters: tripleo.derive_params.v1.derive_parameters: # DPDK Parameters # # Specifies the minimum number of CPU physical cores to be allocated for DPDK # PMD threads. The actual allocation will be based on network config, if # the a DPDK port is associated with a numa node, then this configuration # will be used, else 1. num_phy_cores_per_numa_node_for_pmd: 1 # Amount of memory to be configured as huge pages in percentage. Ouf the # total available memory (excluding the NovaReservedHostMemory), the # specified percentage of the remaining is configured as huge pages. huge_page_allocation_percentage: 50
运行
openstack overcloud deploy
命令并包含以下信息:-
update-plan-only
选项 - 角色文件和所有环境文件特定于您的环境
带有
--plan-environment-file
可选参数的plan-environment-derived-parms.yaml
文件$ openstack overcloud deploy --templates --update-plan-only \ -r /home/stack/roles_data.yaml \ -e /home/stack/<environment-file> \ ... _#repeat as necessary_ ... **-p /home/stack/plan-environment-derived-params.yaml**
-
此命令的输出显示派生的结果,也会合并到 plan-environment.yaml
文件中。
Started Mistral Workflow tripleo.validations.v1.check_pre_deployment_validations. Execution ID: 55ba73f2-2ef4-4da1-94e9-eae2fdc35535 Waiting for messages on queue '472a4180-e91b-4f9e-bd4c-1fbdfbcf414f' with no timeout. Removing the current plan files Uploading new plan files Started Mistral Workflow tripleo.plan_management.v1.update_deployment_plan. Execution ID: 7fa995f3-7e0f-4c9e-9234-dd5292e8c722 Plan updated. Processing templates in the directory /tmp/tripleoclient-SY6RcY/tripleo-heat-templates Invoking workflow (tripleo.derive_params.v1.derive_parameters) specified in plan-environment file Started Mistral Workflow tripleo.derive_params.v1.derive_parameters. Execution ID: 2d4572bf-4c5b-41f8-8981-c84a363dd95b Workflow execution is completed. result: ComputeOvsDpdkParameters: IsolCpusList: 1,2,3,4,5,6,7,9,10,17,18,19,20,21,22,23,11,12,13,14,15,25,26,27,28,29,30,31 KernelArgs: default_hugepagesz=1GB hugepagesz=1G hugepages=32 iommu=pt intel_iommu=on isolcpus=1,2,3,4,5,6,7,9,10,17,18,19,20,21,22,23,11,12,13,14,15,25,26,27,28,29,30,31 NovaReservedHostMemory: 4096 NovaComputeCpuDedicatedSet: 2,3,4,5,6,7,18,19,20,21,22,23,10,11,12,13,14,15,26,27,28,29,30,31 OvsDpdkMemoryChannels: 4 OvsDpdkSocketMemory: 1024,1024 OvsPmdCoreList: 1,17,9,25
OvsDpdkMemoryChannels
参数无法从内省详情中获取。在大多数情况下,这个值应该是 4。
使用衍生参数部署 overcloud
使用这些派生参数部署 overcloud:
将 deploy 命令输出中派生的参数复制到
network-environment.yaml
文件中。# DPDK compute node. ComputeOvsDpdkParameters: KernelArgs: default_hugepagesz=1GB hugepagesz=1G hugepages=32 iommu=pt intel_iommu=on TunedProfileName: "cpu-partitioning" IsolCpusList: "1,2,3,4,5,6,7,9,10,17,18,19,20,21,22,23,11,12,13,14,15,25,26,27,28,29,30,31" NovaComputeCpuDedicatedSet: ['2,3,4,5,6,7,18,19,20,21,22,23,10,11,12,13,14,15,26,27,28,29,30,31'] NovaReservedHostMemory: 4096 OvsDpdkSocketMemory: "1024,1024" OvsDpdkMemoryChannels: "4" OvsPmdCoreList: "1,17,9,25"
注意这些参数适用于特定的角色 ComputeOvsDpdk。您可以在全局范围内应用这些参数,但特定于角色的参数会覆盖任何全局参数。
- 使用角色文件和特定于您的环境的所有环境文件来部署 overcloud。
openstack overcloud deploy --templates \ -r /home/stack/roles_data.yaml \ -e /home/stack/<environment-file> \ ... #repeat as necessary ...
在具有 Compute、ComputeOvsDpdk 和 ComputeSriov 的集群中,工作流只对 ComputeOvsDpdk 角色应用公式,而不是 Compute 或 ComputeSriovs。