7.4. 手动计算 OVS-DPDK 参数的概述


本节论述了如何使用 Data Plane Development Kit (OVS-DPDK)在 director network_environment.yaml HEAT 模板中使用参数来配置 CPU 和内存以实现最佳性能。使用这些信息评估您的 Compute 节点上的硬件支持,以及该硬件分区以优化 OVS-DPDK 部署的方式。

注意

如果您使用 derived_parameters.yaml 工作流自动生成这些值,则不需要手动计算这些参数。查看 工作流和派生参数概述

注意

在分配 CPU 内核时,始终对物理核心的 CPU 同级线程(逻辑 CPU)在一起。

请参阅 发现 NUMA 节点拓扑,以确定 Compute 节点上的 CPU 和 NUMA 节点。您可以使用这些信息映射 CPU 和其他参数来支持主机、客户机实例和 OVS-DPDK 进程的需求。

7.4.1. CPU 参数

OVS-DPDK 使用以下 CPU 分区参数:

OvsPmdCoreList

提供用于 DPDK 轮询模式驱动程序(PMD)的 CPU 内核。选择与 DPDK 接口本地 NUMA 节点关联的 CPU 内核。OvsPmdCoreList 用于 Open vSwitch 中的 pmd-cpu-mask 值。

  • 对同级的线程连接在一起。
  • OvsDpdkCoreList中排除所有内核
  • 避免为两个 NUMA 节点上的第一个物理内核分配逻辑 CPU (线程同级),因为它们应该用于 OvsDpdkCoreList 参数。
  • 性能取决于为此 PMD 核心列表分配的物理内核数。在与 DPDK NIC 关联的 NUMA 节点上,分配所需的内核。
  • 对于使用 DPDK NIC 的 NUMA 节点:

    • 根据性能要求确定所需的物理内核数量,并包含每个物理内核的所有同级线程(逻辑 CPU)。
  • 对于没有 DPDK NIC 的 NUMA 节点:

    • 分配一个物理内核(逻辑 CPU)的同级线程(逻辑 CPU),排除了 NUMA 节点的第一个物理核心。
注意

DPDK PMD 线程必须在两个 NUMA 节点上保留,即使 NUMA 节点没有关联的 DPDK NIC。

NovaVcpuPinSet

为 CPU 固定设置内核。Compute 节点将这些核心用于客户机实例。NovaVcpuPinSet 用作 nova.conf 文件中的 vcpu_pin_set 值。

  • OvsPmdCoreListOvsDpdkCoreList 中排除所有核心。
  • 包括所有剩余内核。
  • 对同级的线程连接在一起。
NovaComputeCpuSharedSet
设置用于仿真程序线程的内核。这将定义 nova.conf 参数 cpu_shared_set 的值。此参数的建议值与 OvsDpdkCoreList 设置的值匹配。
IsolCpusList

与主机进程隔离的一组 CPU 核心。此参数用作 tuned-profiles-cpu-partitioning 组件的 cpu-partitioning-variable.conf 文件中的 isolated_cores 值。

  • 匹配 OvsPmdCoreListNovaVcpuPinSet 中的内核数。
  • 对同级的线程连接在一起。
OvsDpdkCoreList

为非数据路径 OVS-DPDK 进程(如处理程序和 revalidator 线程)提供 CPU 内核。这个参数不会影响多 NUMA 节点硬件上的整个数据路径性能。此参数用于 Open vSwitch 中的 dpdk-lcore-mask 值,这些核心与主机共享。

  • 为每个 NUMA 节点分配第一个物理内核(和同级线程)(即使 NUMA 节点没有关联的 DPDK NIC)。
  • 这些内核必须从 OvsPmdCoreListNovaVcpuPinSet 中的内核数相互排斥。
DerivePciWhitelistEnabled

要为虚拟机保留虚拟功能(VF),请使用 NovaPCIPassthrough 参数创建通过 Nova 传递给 Nova 的 VF 列表。列表中排除的虚拟机可用于主机。

红帽建议将 DerivePciWhitelistEnabled 值从 true 的默认值改为 false,然后在 NovaPCIPassthrough 参数中手动配置列表。

对于列表中的每个 VF,使用解析到地址值的正则表达式填充 address 参数。

以下是手动列表创建过程的示例。如果在名为 eno2 的设备中启用 NIC 分区,使用以下命令列出 VF 的 PCI 地址:

[heat-admin@compute-0 ~]$ ls -lh /sys/class/net/eno2/device/ | grep virtfn
lrwxrwxrwx. 1 root root    0 Apr 16 09:58 virtfn0 -> ../0000:18:06.0
lrwxrwxrwx. 1 root root    0 Apr 16 09:58 virtfn1 -> ../0000:18:06.1
lrwxrwxrwx. 1 root root    0 Apr 16 09:58 virtfn2 -> ../0000:18:06.2
lrwxrwxrwx. 1 root root    0 Apr 16 09:58 virtfn3 -> ../0000:18:06.3
lrwxrwxrwx. 1 root root    0 Apr 16 09:58 virtfn4 -> ../0000:18:06.4
lrwxrwxrwx. 1 root root    0 Apr 16 09:58 virtfn5 -> ../0000:18:06.5
lrwxrwxrwx. 1 root root    0 Apr 16 09:58 virtfn6 -> ../0000:18:06.6
lrwxrwxrwx. 1 root root    0 Apr 16 09:58 virtfn7 -> ../0000:18:06.7
Copy to Clipboard Toggle word wrap

在本例中,VF 0、4 和 6 供 eno2 用于 NIC 分区。手动配置 NovaPCIPassthrough 以包括 VF 1-3、5 和 7,因此排除 VFs 0、4 和 6,如下例所示:

NovaPCIPassthrough:
  - physical_network: "sriovnet2"
  address: {"domain": ".*", "bus": "18", "slot": "06", "function": "[1-3]"}
  - physical_network: "sriovnet2"
  address: {"domain": ".*", "bus": "18", "slot": "06", "function": "[5]"}
  - physical_network: "sriovnet2"
  address: {"domain": ".*", "bus": "18", "slot": "06", "function": "[7]"}
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat