18.8. 使用 DPDK 和 RDMA
OpenShift Container Platform 支持容器化 Data Plane Development Kit (DPDK) 应用程序。您可以使用单一根 I/O 虚拟化(SR-IOV)网络硬件和 Data Plane Development Kit (DPDK) 以及远程直接内存访问 (RDMA) 。
在执行以下文档中的任何任务前,请确保 安装了 SR-IOV Network Operator。
18.8.1. 在 pod 中使用虚拟功能的示例
您可以在附加了 SR-IOV VF 的 pod 中运行远程直接内存访问 (RDMA) 或 Data Plane Development Kit (DPDK) 应用程序。
本示例演示了在 RDMA 模式中使用虚拟功能 (VF) 的 pod:
使用 RDMA 模式的 Pod 规格
以下示例演示了在 DPDK 模式中使用 VF 的 pod:
使用 DPDK 模式的 Pod 规格
18.8.2. 在 DPDK 模式中使用 Intel NIC 的虚拟功能
先决条件
- 
							安装 OpenShift CLI(oc)。
- 安装 SR-IOV Network Operator。
- 
							以具有 cluster-admin特权的用户身份登录。
流程
- 创建以下 - SriovNetworkNodePolicy对象,然后在- intel-dpdk-node-policy.yaml文件中保存 YAML。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 将虚拟功能(VF)的驱动器类型指定为vfio-pci。
 注意- 如需了解 - inSriovNetworkNodePolicy的每个选项的详情,请参阅- Configuring SR-IOV network devices部分。- 当应用由 - SriovNetworkNodePolicy对象中指定的配置时,SR-IOV Operator 可能会排空节点,并在某些情况下会重启节点。它可能需要几分钟时间来应用配置更改。确保集群中有足够的可用节点,用以预先处理被驱除的工作负载。- 应用配置更新后, - openshift-sriov-network-operator命名空间中的所有 pod 将变为- Running状态。
- 运行以下命令来创建 - SriovNetworkNodePolicy对象:- oc create -f intel-dpdk-node-policy.yaml - $ oc create -f intel-dpdk-node-policy.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建以下 - SriovNetwork对象,然后在- intel-dpdk-network.yaml文件中保存 YAML。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 为 ipam CNI 插件指定一个配置对象做为一个 YAML 块 scalar。该插件管理附加定义的 IP 地址分配。
 注意- 如需 - SriovNetwork中的每个选项的详细说明,请参阅"Configuring SR-IOV additional network" 部分。- 一个可选的库 app-netutil 提供了多种 API 方法来收集有关容器父 pod 的网络信息。 
- 运行以下命令来创建 - SriovNetwork对象:- oc create -f intel-dpdk-network.yaml - $ oc create -f intel-dpdk-network.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建以下 - Podspec,然后在- intel-dpdk-pod.yaml文件中保存 YAML。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定target_namespace,它与SriovNetwork对象intel-dpdk-network创建于的命令空间相同。如果要在其他命名空间中创建 pod,在Podspec 和SriovNetwork对象中更改target_namespace。
- 2
- 指定包含应用程序和应用程序使用的 DPDK 库的 DPDK 镜像。
- 3
- 指定容器内的应用程序进行大页分配、系统资源分配和网络接口访问所需的额外功能。
- 4
- 在/mnt/huge下将巨页卷挂载到 DPDK pod。巨页卷由 emptyDir 卷类型支持,medium 为Hugepages。
- 5
- 可选:指定分配给 DPDK pod 的 DPDK 设备数。如果未明确指定,则此资源请求和限制将被 SR-IOV 网络资源注入程序自动添加。SR-IOV 网络资源注入程序是由 SR-IOV Operator 管理的准入控制器组件。它默认是启用的,可以通过把默认的SriovOperatorConfigCR 中的enableInjector选项设置为false来禁用它。
- 6
- 指定 CPU 数量。DPDK pod 通常需要从 kubelet 分配专用 CPU。这可以通过将 CPU Manager 策略设置为static,并创建带有有保障的QoS 的 pod 来实现。
- 7
- 指定巨页大小hugepages-1Gi或hugepages-2Mi以及分配给 DPDK pod 的巨页数量。单独配置2Mi和1Gi巨页。配置1Gi巨页需要在节点中添加内核参数。例如:添加内核参数default_hugepagesz=1GB,hugepagesz=1G和hugepages=16将在系统引导时分配16*1Gi巨页。
 
- 运行以下命令来创建 DPDK pod: - oc create -f intel-dpdk-pod.yaml - $ oc create -f intel-dpdk-pod.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
18.8.3. 在带有 Mellanox NIC 的 DPDK 模式中使用虚拟功能
您可以创建一个网络节点策略,并在带有 Mellanox NIC 的 DPDK 模式中使用虚拟功能创建 Data Plane Development Kit (DPDK) pod。
先决条件
- 
							已安装 OpenShift CLI(oc)。
- 已安装 Single Root I/O Virtualization (SR-IOV) Network Operator。
- 
							您已以具有 cluster-admin权限的用户身份登录。
流程
- 将以下 - SriovNetworkNodePolicyYAML 配置保存到- mlx-dpdk-node-policy.yaml文件中:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 如需了解 - SriovNetworkNodePolicy对象中的每个选项的详细说明,请参阅配置 SR-IOV 网络设备。- 当应用由 - SriovNetworkNodePolicy对象中指定的配置时,SR-IOV Operator 可能会排空节点,并在某些情况下会重启节点。它可能需要几分钟时间来应用配置更改。确保集群中有足够的可用节点,用以预先处理被驱除的工作负载。- 应用配置更新后, - openshift-sriov-network-operator命名空间中的所有 pod 将变为- Running状态。
- 运行以下命令来创建 - SriovNetworkNodePolicy对象:- oc create -f mlx-dpdk-node-policy.yaml - $ oc create -f mlx-dpdk-node-policy.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将以下 - SriovNetworkYAML 配置保存到- mlx-dpdk-network.yaml文件中:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 为 IP 地址管理 (IPAM) Container Network Interface (CNI) 插件指定一个配置对象作为 YAML 块 scalar。该插件管理附加定义的 IP 地址分配。
 注意- 如需了解 - SriovNetwork对象中的每个选项的详细说明,请参阅配置 SR-IOV 网络设备。- app-netutil选项库提供了几个 API 方法,用于收集有关容器父 pod 的网络信息。
- 运行以下命令来创建 - SriovNetwork对象:- oc create -f mlx-dpdk-network.yaml - $ oc create -f mlx-dpdk-network.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将以下 - PodYAML 配置保存到- mlx-dpdk-pod.yaml文件中:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定target_namespace,它与SriovNetwork对象mlx-dpdk-network创建于的命令空间相同。要在不同命名空间中创建 pod,在Podspec 和SriovNetwork对象中更改target_namespace。
- 2
- 指定包含应用程序和应用程序使用的 DPDK 库的 DPDK 镜像。
- 3
- 指定容器内的应用程序进行大页分配、系统资源分配和网络接口访问所需的额外功能。
- 4
- 将巨页卷挂载到/mnt/huge下的 DPDK pod 中。巨页卷由emptyDir卷类型支持,介质是Hugepages。
- 5
- 可选:指定分配给 DPDK pod 的 DPDK 设备数。如果没有明确指定,则 SR-IOV 网络资源注入程序会自动添加此资源请求和限制。SR-IOV 网络资源注入程序是由 SR-IOV Operator 管理的准入控制器组件。它默认是启用的,可以通过把默认的SriovOperatorConfigCR 中的enableInjector选项设置为false来禁用它。
- 6
- 指定 CPU 数量。DPDK pod 通常需要从 kubelet 分配专用 CPU。要做到这一点,将 CPU Manager 策略设置为static,并创建带有Guaranteed服务质量 (QoS) 的 pod。
- 7
- 指定巨页大小hugepages-1Gi或hugepages-2Mi以及分配给 DPDK pod 的巨页数量。单独配置2Mi和1Gi巨页。配置1Gi巨页需要在节点中添加内核参数。
 
- 运行以下命令来创建 DPDK pod: - oc create -f mlx-dpdk-pod.yaml - $ oc create -f mlx-dpdk-pod.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
18.8.4. 使用TAP CNI 运行具有内核访问权限的 rootless DPDK 工作负载
					DPDK 应用程序可以使用 virtio-user 作为异常路径,将某些类型的数据包(如日志消息)注入内核进行处理。有关此功能的更多信息,请参阅 Virtio_user 作为例外路径。
				
					在 OpenShift Container Platform 版本 4.14 及更高版本中,您可以使用非特权 pod 和 tap CNI 插件运行 DPDK 应用程序。要启用此功能,您需要在 SriovNetworkNodePolicy 对象中将 needVhostNet 参数设置为 true 来挂载 vhost-net 设备。
				
图 18.1. DPDK 和TAP 示例配置
先决条件
- 
							已安装 OpenShift CLI(oc)。
- 已安装 SR-IOV Network Operator。
- 
							您以具有 cluster-admin权限的用户身份登录。
- 确保在所有节点上将 - container_use_devices=on设置为 root。注意- 使用 Machine Config Operator 设置此 SELinux 布尔值。 
流程
- 创建一个文件,如 - test-namespace.yaml,其内容类似以下示例:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来创建新的 - Namespace对象:- oc apply -f test-namespace.yaml - $ oc apply -f test-namespace.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建一个文件,如 - sriov-node-network-policy.yaml,内容类似以下示例:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来创建 - SriovNetworkNodePolicy对象:- oc create -f sriov-node-network-policy.yaml - $ oc create -f sriov-node-network-policy.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建以下 - SriovNetwork对象,然后在- sriov-network-attachment.yaml文件中保存 YAML:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 如需 - SriovNetwork中的每个选项的详细说明,请参阅"Configuring SR-IOV additional network" 部分。- 一个可选的库 - app-netutil提供了多种 API 方法来收集有关容器父 pod 的网络信息。
- 运行以下命令来创建 - SriovNetwork对象:- oc create -f sriov-network-attachment.yaml - $ oc create -f sriov-network-attachment.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建一个文件,如 - tap-example.yaml,该文件定义网络附加定义,其内容类似以下示例:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定创建SriovNetwork对象的target_namespace。
 
- 运行以下命令来创建 - NetworkAttachmentDefinition对象:- oc apply -f tap-example.yaml - $ oc apply -f tap-example.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建一个文件,如 - dpdk-pod-rootless.yaml,其内容类似以下示例:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定target_namespace创建SriovNetwork对象。如果要在其他命名空间中创建 pod,在Podspec 和SriovNetwork对象中更改target_namespace。
- 2
- 设置在这些卷中创建的卷挂载目录和文件的组所有权。
- 3
- 指定用于运行容器的主要组 ID。
- 4
- 指定包含应用程序和应用程序使用的 DPDK 库的 DPDK 镜像。
- 5
- 从容器的 securityContext 中删除所有功能 (ALL) 意味着容器在正常操作之外没有特殊的特权。
- 6
- 指定容器内的应用程序进行大页分配、系统资源分配和网络接口访问所需的额外功能。这些功能还必须使用setcap命令在二进制文件中设置。
- 7
- Mellanox 网络接口控制器(NIC)需要NET_RAW功能。
- 8
- 指定用于运行容器的用户 ID。
- 9
- 此设置表示 pod 中的容器或容器不应被授予对主机系统的特权访问权限。
- 10
- 此设置允许容器在可能已分配的初始非 root 特权外升级其特权。
- 11
- 此设置可确保容器以非 root 用户身份运行。这有助于强制实施最小特权的原则,限制对容器造成潜在的影响,并减少攻击面。
- 12
- 在/mnt/huge下将巨页卷挂载到 DPDK pod。巨页卷由 emptyDir 卷类型支持,medium 为Hugepages。
- 13
- 可选:指定分配给 DPDK pod 的 DPDK 设备数。如果没有明确指定,则 SR-IOV 网络资源注入程序会自动添加此资源请求和限制。SR-IOV 网络资源注入程序是由 SR-IOV Operator 管理的准入控制器组件。它默认是启用的,可以通过把默认的SriovOperatorConfigCR 中的enableInjector选项设置为false来禁用它。
- 14
- 指定 CPU 数量。DPDK pod 通常需要从 kubelet 分配专用 CPU。这可以通过将 CPU Manager 策略设置为static,并创建带有有保障的QoS 的 pod 来实现。
- 15
- 指定巨页大小hugepages-1Gi或hugepages-2Mi以及分配给 DPDK pod 的巨页数量。单独配置2Mi和1Gi巨页。配置1Gi巨页需要在节点中添加内核参数。例如:添加内核参数default_hugepagesz=1GB,hugepagesz=1G和hugepages=16将在系统引导时分配16*1Gi巨页。
- 16
- 如果您的性能配置集没有命名为cnf-performance profile,请将该字符串替换为正确的性能配置集名称。
 
- 运行以下命令来创建 DPDK pod: - oc create -f dpdk-pod-rootless.yaml - $ oc create -f dpdk-pod-rootless.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
18.8.5. 实现特定 DPDK 行率概述
要实现特定的 Data Plane Development Kit (DPDK) 行率,部署 Node Tuning Operator 并配置单根 I/O 虚拟化 (SR-IOV)。您还必须为以下资源调整 DPDK 设置:
- 隔离的 CPU
- Hugepages
- 拓扑调度程序
在早期版本的 OpenShift Container Platform 中,Performance Addon Operator 用来实现自动性能优化,以便为 OpenShift Container Platform 应用程序实现低延迟性能。在 OpenShift Container Platform 4.11 及更新的版本中,这个功能是 Node Tuning Operator 的一部分。
DPDK 测试环境
下图显示了流量测试环境的组件:
- 流量生成器:可以生成高容量数据包流量的应用。
- SR-IOV 支持 NIC :与 SR-IOV 兼容的网络接口卡。该卡在物理接口上运行多个虚拟功能。
- 物理功能 (PF) :支持 SR-IOV 接口的网络适配器的 PCI Express (PCIe) 功能。
- 虚拟功能 (VF) :支持 SR-IOV 的网络适配器上的轻量级 PCIe 功能。VF 与网络适配器上的 PCIe PF 关联。VF 代表网络适配器的虚拟实例。
- 交换机 :网络交换机。节点也可以重新连接到回来。
- 
							testpmd: DPDK 中包含的示例应用程序。testpmd应用可用于在数据包转发模式下测试 DPDK。testpmd应用程序也是如何使用 DPDK 软件开发套件 (SDK) 构建功能全面的应用程序的示例。
- worker 0 和 worker 1:OpenShift Container Platform 节点。
18.8.6. 使用 SR-IOV 和 Node Tuning Operator 实现 DPDK 行率
您可以使用 Node Tuning Operator 配置隔离的 CPU、巨页和拓扑调度程序。然后,您可以使用 Node Tuning Operator 和单根 I/O 虚拟化 (SR-IOV) 来实现特定的 Data Plane Development Kit (DPDK) 行率。
先决条件
- 
							已安装 OpenShift CLI(oc)。
- 已安装 SR-IOV Network Operator。
- 
							您已以具有 cluster-admin权限的用户身份登录。
- 您已部署了独立的 Node Tuning Operator。 注意- 在以前版本的 OpenShift Container Platform 中,Performance Addon Operator 用来实现自动性能优化,以便为 OpenShift 应用程序实现低延迟性能。在 OpenShift Container Platform 4.11 及更新的版本中,这个功能是 Node Tuning Operator 的一部分。 
流程
- 根据以下示例创建 - PerformanceProfile对象:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 如果系统上启用了超线程,请分配与isolated和reservedCPU 组的相关符号链接。如果系统包含多个非统一内存访问节点 (NUMA),请将两个 NUMA 中的 CPU 分配给这两个组。您还可以将 Performance Profile Creator 用于此任务。如需更多信息,请参阅创建性能配置集。
- 2
- 您还可以指定将队列设置为保留 CPU 数的设备列表。如需更多信息,请参阅使用 Node Tuning Operator 缩减 NIC 队列。
- 3
- 分配所需的巨页的数量和大小。您可以为巨页指定 NUMA 配置。默认情况下,系统会为系统上的每个 NUMA 节点分配一个偶数数量。如果需要,您可以请求对节点使用实时内核。如需更多信息,请参阅置备具有实时功能的 worker。
 
- 
							将 yaml文件保存为mlx-dpdk-perfprofile-policy.yaml。
- 使用以下命令应用性能配置集: - oc create -f mlx-dpdk-perfprofile-policy.yaml - $ oc create -f mlx-dpdk-perfprofile-policy.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
18.8.6.1. 用于容器应用程序的 DPDK 库
						一个可选的库 app-netutil 提供了几个 API 方法,用于从该 pod 中运行的容器内收集 pod 的网络信息。
					
此库可以将 SR-IOV 虚拟功能(VF)集成到 Data Plane Development Kit(DPDK)模式中。该程序库提供 Golang API 和 C API。
当前,采用三个 API 方法:
- GetCPUInfo()
- 此函数决定了哪些 CPU 可供容器使用并返回相关列表。
- GetHugepages()
- 
									此函数决定了每个容器在 Podspec 中请求的巨页内存量并返回相应的值。
- GetInterfaces()
- 此函数决定了容器中的一组接口,并返回相关的列表。返回值包括每个接口的接口类型和特定于类型的数据。
						库的存储库包括用于构建容器镜像 dpdk-app-centos 的示例 Dockerfile。根据容器集规格中的环境变量,容器镜像可以运行以下 DPDK 示例应用之一: l2fwd、l3wd 或 testpmd。容器镜像提供了一个将 app-netutil 库集成到容器镜像本身的示例。库也可以集成到 init 容器中。init 容器可以收集所需的数据,并将数据传递给现有的 DPDK 工作负载。
					
18.8.6.2. 用于虚拟功能的 SR-IOV Network Operator 示例
您可以使用单根 I/O 虚拟化 (SR-IOV) Network Operator 从节点上分配和配置虚拟功能 (VF) 的虚拟功能(VF)。
如需有关部署 Operator 的更多信息,请参阅安装 SR-IOV Network Operator。有关配置 SR-IOV 网络设备的更多信息,请参阅配置 SR-IOV 网络设备。
						在 Intel VF 和 Mellanox VF 上运行 Data Plane Development Kit (DPDK) 工作负载之间存在一些区别。本节为这两个 VF 类型提供对象配置示例。以下是用于在 Intel NIC 上运行 DPDK 应用程序的 sriovNetworkNodePolicy 对象示例:
					
						以下是 Mellanox NIC 的 sriovNetworkNodePolicy 对象示例:
					
18.8.6.3. SR-IOV 网络 Operator 示例
						以下是 sriovNetwork 对象的示例定义。在这种情况下,Intel 和 Mellanox 配置是相同的:
					
18.8.6.4. DPDK 基础工作负载示例
以下是数据平面开发套件 (DPDK) 容器的示例:
							不要使用 SLEEP 启动容器集,然后执行到容器集以启动 testpmd 或 DPDK 工作负载。这可添加额外的中断,因为 exec 进程没有固定到任何 CPU。
						
18.8.6.5. testpmd 脚本示例
						以下是运行 testpmd 的示例脚本:
					
						这个示例使用两个不同的 sriovNetwork CR。环境变量包含分配给 pod 的虚拟功能 (VF) PCI 地址。如果您在 pod 定义中使用相同的网络,您必须分割 pciAddress。配置流量生成器的正确 MAC 地址非常重要。这个示例使用自定义 MAC 地址。
					
18.8.7. 在带有 Mellanox NIC 的 RDMA 模式中使用虚拟功能
RDMA over Converged Ethernet (RoCE) 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
在 OpenShift Container Platform 上使用 RDMA 时,RDMA over Converged Ethernet (RoCE) 是唯一支持的模式。
先决条件
- 
							安装 OpenShift CLI(oc)。
- 安装 SR-IOV Network Operator。
- 
							以具有 cluster-admin特权的用户身份登录。
流程
- 创建以下 - SriovNetworkNodePolicy对象,然后在- mlx-rdma-node-policy.yaml文件中保存 YAML。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 如需了解 - inSriovNetworkNodePolicy的每个选项的详情,请参阅- Configuring SR-IOV network devices部分。- 当应用由 - SriovNetworkNodePolicy对象中指定的配置时,SR-IOV Operator 可能会排空节点,并在某些情况下会重启节点。它可能需要几分钟时间来应用配置更改。确保集群中有足够的可用节点,用以预先处理被驱除的工作负载。- 应用配置更新后, - openshift-sriov-network-operator命名空间中的所有 pod 将变为- Running状态。
- 运行以下命令来创建 - SriovNetworkNodePolicy对象:- oc create -f mlx-rdma-node-policy.yaml - $ oc create -f mlx-rdma-node-policy.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建以下 - SriovNetwork对象,然后在- mlx-rdma-network.yaml文件中保存 YAML。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 为 ipam CNI 插件指定一个配置对象做为一个 YAML 块 scalar。该插件管理附加定义的 IP 地址分配。
 注意- 如需 - SriovNetwork中的每个选项的详细说明,请参阅"Configuring SR-IOV additional network" 部分。- 一个可选的库 app-netutil 提供了多种 API 方法来收集有关容器父 pod 的网络信息。 
- 运行以下命令来创建 - SriovNetworkNodePolicy对象:- oc create -f mlx-rdma-network.yaml - $ oc create -f mlx-rdma-network.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建以下 - Podspec,然后在- mlx-rdma-pod.yaml文件中保存 YAML。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定target_namespace,它与SriovNetwork对象mlx-rdma-network创建于的命令空间相同。如果要在其他命名空间中创建 pod,在Podspec 和SriovNetwork对象中更改target_namespace。
- 2
- 指定包含应用程序和应用程序使用的 RDMA 库的 RDMA 镜像。
- 3
- 指定容器内的应用程序进行大页分配、系统资源分配和网络接口访问所需的额外功能。
- 4
- 在/mnt/huge下将巨页卷挂载到 RDMA pod。巨页卷由 emptyDir 卷类型支持,medium 为Hugepages。
- 5
- 指定 CPU 数量。RDMA pod 通常需要从 kubelet 分配专用 CPU。这可以通过将 CPU Manager 策略设置为static,并创建带有有保障的QoS 的 pod 来实现。
- 6
- 指定巨页大小hugepages-1Gi或hugepages-2Mi以及分配给 RDMA pod 的巨页数量。单独配置2Mi和1Gi巨页。配置1Gi巨页需要在节点中添加内核参数。
 
- 运行以下命令来创建 RDMA pod: - oc create -f mlx-rdma-pod.yaml - $ oc create -f mlx-rdma-pod.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
18.8.8. 在 OpenStack 上使用 OVS-DPDK 的集群测试 pod 模板
					以下 testpmd pod 演示了使用巨页、保留 CPU 和 SR-IOV 端口创建容器。
				
testpmd pod 示例
 
    