4.6. Telco RAN DU 参考组件
以下小节描述了用于配置和部署集群来运行 RAN DU 工作负载的各种 OpenShift Container Platform 组件和配置。
图 4.2. Telco RAN DU 参考组件
确保没有在电信 RAN DU 配置集中指定的其他组件不会影响分配给工作负载应用程序的 CPU 资源。
不支持在树外驱动程序中。5g RAN 应用程序组件不包含在 RAN DU 配置集中,必须针对分配给应用程序的资源(CPU)进行设计。
4.6.1. 主机固件调整 复制链接链接已复制到粘贴板!
- 这个版本中的新内容
- 这个版本没有参考设计更新
- 描述
在初始集群部署期间调优主机固件设置以获得最佳的性能。如需更多信息,请参阅"为 vDU 应用程序工作负载推荐单节点 OpenShift 集群配置"。在初始部署期间应用主机固件中的调优设置。如需更多信息,请参阅“使用 GitOps ZTP 管理主机固件设置”。受管集群主机固件设置在 hub 集群中作为使用
ClusterInstanceCR 和 GitOps ZTP 部署受管集群时创建的独立BareMetalHost自定义资源(CR)提供。注意根据提供的参考
example-sno.yamlCR 创建ClusterInstanceCR。- 限制和要求
- 您必须在主机固件设置中启用 Hyper-Threading
- 工程考虑
- 调优所有固件设置以获得最佳性能。
- 除非需要针对节能进行调优,否则所有设置都是针对实现最大性能而设计的。
- 如果需要,您可以针对实现节能目的而对主机固件进行调优,这会牺牲性能。
- 启用安全引导。启用安全引导后,内核只载入签名的内核模块。不支持树外驱动程序。
4.6.2. kubelet 设置 复制链接链接已复制到粘贴板!
有些 CNF 工作负载使用 sysctl,这些 sysctl 不在系统范围的安全 sysctl 列表中。通常,网络 sysctl 具有命名空间,您可以使用 PerformanceProfile 自定义资源(CR)中的 kubeletconfig.experimental 注解作为以下形式的 JSON 字符串来启用它们:
显示 allowedUnsafeSysctls 的片段示例
虽然这些 sysctl 具有命名空间,但可能允许 pod 使用内存或其他资源,超过 pod 描述中指定的任何限制。您必须确保这些 sysctl 不耗尽平台资源。
如需更多信息,请参阅"在容器中使用 sysctl"。
4.6.3. CPU 分区和性能调整 复制链接链接已复制到粘贴板!
- 这个版本中的新内容
PerformanceProfile和Tuned PerformancePatch对象已更新,以完全支持 aarch64 架构。-
如果您之前已将额外的补丁应用到
Tuned PerformancePatch对象,则必须将这些补丁转换为包括 run-du-performance配置集的新性能配置集。请参阅"引擎注意事项"部分。
-
如果您之前已将额外的补丁应用到
- 描述
-
RAN DU 使用模型包括集群性能调优,使用
PerformanceProfileCR 进行低延迟性能,以及添加其他特定于 RAN 的调优的Tuned PerformancePatchCR。为 x86_64 和 aarch64 CPU 架构提供了一个参考PerformanceProfile。提供的单个Tuned PerformancePatch对象自动检测 CPU 架构并执行所需的额外调整。RAN DU 用例需要针对低延迟性能调整集群。Node Tuning Operator 协调PerformanceProfile和TunedPerformancePatchCR。
有关使用 PerformanceProfile CR 进行节点调整的详情,请参阅"使用性能配置集为低延迟的节点"。
- 限制和要求
您必须在 Tel RAN DU 配置集
PerformanceProfileCR 中配置以下设置:在 x86_64 上设置为 4 个或更多个保留的
cpuset(相当于 4 个超线程(2 个内核),或将 aarch64 上的 4 个内核用于以下 CPU:- Intel 3rd Generation Xeon (IceLake) 2.20 GHz 或更好的 CPU,带有调整主机固件以获得最大性能
- AMD EPYC Zen 4 CPU (Genoa、Bergamo)。
ARM CPU (Neoverse)
注意建议评估功能,如每个 pod 电源管理,以确定对性能的潜在影响。
x86_64:
-
将保留的
cpuset设置为包括每个包含的内核的超线程同级功能。Unreserved 内核可作为可分配 CPU 用于调度工作负载。 - 确保超线程不会跨保留和隔离的内核进行分割。
- 确保保留和隔离的 CPU 包括 CPU 中所有内核的所有线程。
- 在保留 CPU 集中包含每个 NUMA 节点的 Core 0。
- 将巨页大小设置为 1G。
-
将保留的
aarch64:
- 将前 4 个内核用于保留 CPU 集(或更多)。
- 将巨页大小设置为 512M。
- 仅固定 OpenShift Container Platform pod,这些 pod 配置为管理工作负载分区的一部分到保留内核。
-
当硬件厂商建议时,使用
hardwareTuning部分为保留和隔离的 CPU 设置最大 CPU 频率。
- 工程考虑
realtime (RT)内核
在 x86_64 下,若要访问完整的性能指标,您必须使用 RT 内核,它是
x86_64/PerformanceProfile.yaml配置中的默认设置。- 如果需要,您可以选择对性能有相应影响的非RT 内核。
-
在 aarch64 下,只会为 RAN DU 用例使用 64k-pagesize 非RT 内核,这是
aarch64/PerformanceProfile.yaml配置中的默认设置。
- 您配置的巨页数量取决于应用程序工作负载要求。这个参数中的变化是正常的,并允许。
- 根据所选硬件和系统中使用的其他组件,预计在保留和隔离的 CPU 集的配置中有变化。变体必须仍然符合指定的限制。
- 没有 IRQ 关联性支持的硬件会影响隔离的 CPU。为确保具有保证整个 CPU QoS 的 pod 完全使用分配的 CPU,服务器中的所有硬件都必须支持 IRQ 关联性。
-
要启用工作负载分区,请在部署过程中将
cpuPartitioningMode设置为AllNodes,然后使用PerformanceProfileCR 分配足够的 CPU 来支持操作系统、中断和 OpenShift Container Platform pod。 -
在 x86_64 下,
PerformanceProfileCR 包含vfio_pci的额外内核参数设置。包括这些参数以支持设备,如 FEC 加速器。如果您的工作负载不需要,可以省略它们。 在 aarch64 下,必须根据平台的需求调整
PerformanceProfile:对于 Grace Hopper 系统,需要以下内核命令行参数:
-
acpi_power_meter.force_cap_on=y -
module_blacklist=nouveau -
pci=realloc=off -
pci=pcie_bus_safe
-
-
对于其他 ARM 平台,您可能需要启用
iommu.passthrough=1或pci=realloc
扩展和增强
Tuned PerformancePatch.yaml:-
TunedPerformancePatch.yaml引入了一个名为 run-du-performance的默认顶级调优配置集,以及名为 run-du-performance-architecture-common的构架感知 RAN 调优配置文件,以及其他特定于 archichitecture 的子策略,由通用策略自动选择。 -
默认情况下,run
-du-performance配置集被设置为优先级级别18,其中包括 PerformanceProfile-created 配置集openshift-node-performance-openshift-node-performance-profile和 run-du-performance-architecture-common 如果您自定义了
PerformanceProfile对象的名称,您必须创建一个新的 tuned 对象,其中包含由PerformanceProfileCR 创建的 tuned 配置集的名称更改,以及 run-du-performance-architecture-commonRAN 调优配置集。这必须具有小于 18的优先级。例如,如果 PerformanceProfile 对象命名为change-this-name:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
要进一步覆盖,可选的
TunedPowerCustom.yaml配置文件如何扩展所提供的Tuned PerformancePatch.yaml,而无需直接覆盖或编辑它。创建额外的调优配置集,其中包含名为 run-du-performance的顶级 tuned 配置集,并在recommend部分中具有较低优先级编号,可以轻松地添加额外的设置。 - 如需有关 Node Tuning Operator 的更多信息,请参阅"使用 Node Tuning Operator"。
-
4.6.4. PTP Operator 复制链接链接已复制到粘贴板!
- 这个版本中的新内容
- 这个版本没有参考设计更新
- 描述
- 在集群节点中配置精确时间协议(PTP)。与其它时钟同步协议(如 NTP)相比,PTP 在 RAN 环境中确保精确的时间和可靠性。
- 支持包括
- grandmaster 时钟(T-GM):使用 GPS 来同步本地时钟,并提供与其他设备的时间同步
- 边界时钟(T-BC):从另一个 PTP 源接收时间并将其重新分发到其它设备
- 普通时钟(T-TSC):同步另一个 PTP 时间源的本地时钟
配置变化允许多个 NIC 配置提高时间分布和高可用性(HA),并通过 HTTP 提供可选快速事件通知。
- 限制和要求
为以下电信用例支持 PTP G.8275.1 配置集:
T-GM 用例:
- 限制为最多 3 个 Westport 频道 NIC
- 需要 GNSS 输入到一个 NIC 卡,以及 SMA 连接来同步其他 NIC
- HA 支持 N/A
T-BC 用例:
- 限制为最多 2 个 NIC
- 系统时钟 HA 支持在 2-NIC 配置中是可选的。
T-TSC 用例:
- 仅限于单个 NIC
- 系统时钟 HA 支持在 active/standby 2-port 配置中是可选的。
-
日志缩减必须使用
true或增强启用。
- 工程考虑
- RAN DU RDS 配置是为普通时钟、边界时钟、P grandmaster 时钟和高可用性双 NIC 边界时钟提供的。
-
PTP 快速事件通知使用
ConfigMapCR 来持久保留订阅者详情。 - PTP 事件不支持在 O-RAN 规格中所述的分级事件订阅。
- PTP fast 事件 REST API v1 是生命周期结束。
4.6.5. SR-IOV Operator 复制链接链接已复制到粘贴板!
- 这个版本中的新内容
- 描述
-
SR-IOV Operator 置备并配置 SR-IOV CNI 和设备插件。
netdevice(内核 VF)和vfio(DPDK) 设备都被支持,并适用于 RAN DU 使用模型。 - 限制和要求
- 使用 OpenShift Container Platform 支持的设备。如需更多信息,请参阅"支持设备"。
- 主机固件设置中的 SR-IOV 和 IOMMU 启用 :SR-IOV Network Operator 会在内核命令行中自动启用 IOMMU。
- SR-IOV VF 不会从 PF 接收链路状态更新。如果需要链接检测,则必须在协议级别进行配置。
- 工程考虑
-
带有
vfio驱动程序类型的 SR-IOV 接口通常用于为需要高吞吐量或低延迟的应用程序启用额外的二级网络。 -
期望客户对
SriovNetwork和SriovNetworkNodePolicy自定义资源 (CR) 的配置和数量变化。 -
IOMMU 内核命令行设置会在安装时使用
MachineConfigCR 应用。这样可确保SriovOperatorCR 在添加节点时不会导致节点重启。 - SR-IOV 支持并行排空节点,不适用于单节点 OpenShift 集群。
-
您必须在部署中包含
SriovOperatorConfigCR;不会自动创建 CR。此 CR 包含在初始部署期间应用的引用配置策略中。 - 如果您将工作负载固定到特定的节点,SR-IOV 并行节点排空功能不会重新调度 pod。在这些情况下,SR-IOV Operator 会禁用并行节点排空功能。
- 不支持使用安全引导或内核锁定进行固件更新的 NIC 必须预先配置足够的虚拟功能(VF),以支持应用程序工作负载所需的 VF 数量。对于 Mellanox NIC,您必须在 SR-IOV Network Operator 中禁用 Mellanox vendor 插件。如需更多信息,请参阅"启用安全引导时在 Mellanox 卡中配置 SR-IOV Network Operator"。
要在 pod 启动后更改虚拟功能的 MTU 值,请不要在
SriovNetworkNodePolicyCR 中配置 MTU 字段。相反,请配置网络管理器,或使用自定义systemd脚本将物理功能的 MTU 设置为适当的值。例如:ip link set dev <physical_function> mtu 9000
# ip link set dev <physical_function> mtu 9000Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
带有
4.6.6. 日志记录 复制链接链接已复制到粘贴板!
- 这个版本中的新内容
- 这个版本没有参考设计更新
- 描述
- 使用日志记录从最边缘节点收集日志进行远程分析。推荐的日志收集器是 Vector。
- 工程考虑
- 例如,处理基础架构和审计日志以外的日志,例如,应用程序工作负载会根据额外的日志记录率需要额外的 CPU 和网络带宽。
- 从 OpenShift Container Platform 4.14 开始,Vector 是引用日志收集器。在 RAN 使用模型中使用 fluentd 已被弃用。
4.6.7. SRIOV-FEC Operator 复制链接链接已复制到粘贴板!
- 这个版本中的新内容
- 这个版本没有参考设计更新
- 描述
- SRIOV-FEC Operator 是一个可选的第三方认证 Operator,支持 FEC 加速器硬件。
- 限制和要求
从 FEC Operator v2.7.0 开始:
- 支持安全引导
-
PF 的
vfio驱动程序需要使用注入 pod 的vfio-token。pod 中的应用程序可以使用 EAL 参数--vfio-vf-token将 VF 令牌传递给 DPDK。
- 工程考虑
- SRIOV-FEC Operator 使用隔离 CPU 集合的 CPU 内核。
- 您可以作为应用程序部署的预检查的一部分来验证 FEC 就绪,例如通过扩展验证策略。
4.6.8. 生命周期代理 复制链接链接已复制到粘贴板!
- 这个版本中的新内容
- 这个版本没有参考设计更新
- 描述
- Lifecycle Agent 为基于单节点 OpenShift 集群的基于镜像的升级提供本地生命周期管理服务。基于镜像的升级是单节点 OpenShift 集群的建议升级方法。
- 限制和要求
- Lifecycle Agent 不适用于带有额外 worker 的多节点集群或单节点 OpenShift 集群。
- Lifecycle Agent 需要您在安装集群时创建的持久性卷。
有关分区要求的更多信息,请参阅"在使用 GitOps ZTP 时在 ostree stateroot 之间配置共享容器目录"。
4.6.9. Local Storage Operator 复制链接链接已复制到粘贴板!
- 这个版本中的新内容
- 这个版本没有参考设计更新
- 描述
-
您可以使用 Local Storage Operator 创建可用作
PVC资源的持久性卷。您创建的PV资源的数量和类型取决于您的要求。 - 工程考虑
-
在创建
PV之前,为PVCR 创建后备存储。这可以是分区、本地卷、LVM 卷或完整磁盘。 -
请参阅
LocalVolumeCR 中的设备列表,访问每个设备以确保正确分配磁盘和分区,例如/dev/disk/by-path/<id>。无法保证在节点重启后逻辑名称(例如/dev/sda)一致。
-
在创建
4.6.10. 逻辑卷管理器存储 复制链接链接已复制到粘贴板!
- 这个版本中的新内容
- 这个版本没有参考设计更新
- 描述
-
逻辑卷管理器 (LVM) 存储是一个可选组件。它通过从本地设备创建逻辑卷来提供块存储和文件存储的动态置备,这些逻辑卷可以被应用程序用作持久性卷声明(PVC)资源。也可以进行卷扩展和快照。RDS 中提供了带有
StorageLVMCluster.yaml文件的示例配置。 - 限制和要求
- 在单节点 OpenShift 集群中,持久性存储必须由 LVM Storage 或本地存储提供,不能同时由这两个存储提供。
- 参考配置中排除卷快照。
- 工程考虑
- LVM 存储可用作 RAN DU 用例的本地存储实现。当 LVM 存储用作存储解决方案时,它会替换 Local Storage Operator,并将所需的 CPU 分配给管理分区作为平台开销。参考配置必须包含这些存储解决方案中的一个,但不能同时包含这两个解决方案。
- 确保有足够的磁盘或分区来满足存储要求。
4.6.11. 工作负载分区 复制链接链接已复制到粘贴板!
- 这个版本中的新内容
- 这个版本没有参考设计更新
- 描述
-
工作负载分区将作为 DU 配置集一部分的 OpenShift Container Platform 和第 2 天 Operator pod 固定到保留的 CPU 集,并从节点核算中删除保留的 CPU。这会保留所有非保留 CPU 内核供用户工作负载使用。这会保留所有非保留 CPU 内核供用户工作负载使用。工作负载分区通过安装参数中设置的能力启用:
cpuPartitioningMode: AllNodes。使用您在PerformanceProfileCR 中配置的保留 CPU 集设置管理分区内核。 - 限制和要求
-
必须注解
Namespace和PodCR,以允许将 pod 应用到管理分区 - 具有 CPU 限制的 Pod 无法分配给分区。这是因为 mutation 可以更改 pod QoS。
- 有关可分配给管理分区的最小 CPU 数量的更多信息,请参阅"Node Tuning Operator"。
-
必须注解
- 工程考虑
- 工作负载分区将所有管理 pod 固定到保留内核。必须将足够数量的内核分配给保留集以考虑操作系统、管理 pod,以及工作负载启动时发生 CPU 使用的预期激增、节点重启或其他系统事件。
4.6.12. 集群调整 复制链接链接已复制到粘贴板!
- 这个版本中的新内容
- 这个版本没有参考设计更新
- 描述
- 有关使用集群功能功能禁用的组件的完整列表,请参阅"集群功能"。
- 限制和要求
- 集群功能不适用于安装程序置备的安装方法。
下表列出了所需的平台调优配置:
| 功能 | 描述 |
|---|---|
| 删除可选集群功能 | 通过在单节点 OpenShift 集群上禁用可选集群 Operator 来减少 OpenShift Container Platform 占用空间。
|
| 配置集群监控 | 通过执行以下操作配置监控堆栈以减少占用空间:
|
| 禁用网络诊断 | 为单节点 OpenShift 禁用网络诊断,因为它们不是必需的。 |
| 配置单个 OperatorHub 目录源 |
将集群配置为使用单个目录源,它只包含 RAN DU 部署所需的 Operator。每个目录源会增加集群中的 CPU 使用量。使用单个 |
| 禁用 Console Operator |
如果集群在禁用控制台的情况下部署,则不需要 |
- 工程考虑
- 从 OpenShift Container Platform 4.19 开始,cgroup v1 不再被支持并已被删除。现在,所有工作负载必须与 cgroup v2 兼容。如需更多信息,请参阅 Red Hat OpenShift 工作负载上下文中的 Red Hat Enterprise Linux 9 更改。
4.6.13. 机器配置 复制链接链接已复制到粘贴板!
- 这个版本中的新内容
- 这个版本没有参考设计更新
- 限制和要求
-
CRI-O 擦除禁用
MachineConfigCR 假设磁盘上的镜像是静态的镜像,而不是在定义的维护窗口中调度的维护期间使用。为确保镜像是静态的,请不要将 podimagePullPolicy字段设置为Always。 - 此表中的配置 CR 是必需的组件,除非另有说明。
-
CRI-O 擦除禁用
| 功能 | 描述 |
|---|---|
| 容器运行时 |
将所有节点角色的容器运行时设为 |
| kubelet 配置和容器挂载命名空间隐藏 | 减少 kubelet 内务和驱除监控的频率,从而减少 CPU 用量 |
| SCTP | 可选配置(默认为启用) |
| Kdump | 可选配置(默认启用)启用 kdump 在内核 panic 发生时捕获调试信息。启用 kdump 的参考 CR 根据参考配置中包含的驱动程序和内核模块集合增加内存保留。 |
| CRI-O 擦除禁用 | 在未清除关闭后禁用 CRI-O 镜像缓存的自动擦除。 |
| 与 SR-IOV 相关的内核参数 | 在内核命令行中包括额外的 SR-IOV 相关参数。 |
| 设置 RCU Normal |
在系统完成启动后设置 |
| 一次性时间同步 | 为 control plane 或 worker 节点运行一次性 NTP 系统时间同步作业。 |