搜索

第 9 章 配置 OVS-DPDK 部署

download PDF

本节在 Red Hat OpenStack Platform 环境中部署 OVS-DPDK。overcloud 通常由预定义角色的节点组成,如 Controller 节点、计算节点和不同的存储节点类型。这些默认角色各自包含 director 节点上的核心 heat 模板中定义的一组服务。

下图显示了一个 OVS-DPDK 拓扑,其 control plane 和数据平面有两个绑定端口:

图 9.1. OVS-DPDK 拓扑示例

OpenStack NFV Config Guide Topology 450694 0617 ECE 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 定义工作流和输入参数:

  1. 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
  2. 运行 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:

  1. 将 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。您可以在全局范围内应用这些参数,但特定于角色的参数会覆盖任何全局参数。

  2. 使用角色文件和特定于您的环境的所有环境文件来部署 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。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.