3. 稳定性验证环境搭建

稳定性验证最怕的一件事,是“测出来的问题说不清是谁的问题”。同一颗 EPYC 处理器,在不同主板、不同 BIOS、不同内核参数、不同驱动版本下,表现可能完全不同。因此环境搭建的目标不是把机器装起来能开机,而是建立一个可复现、可追溯、可对比的基线环境:硬件配置固定、固件版本固定、软件栈固定、管理通道固定,任何一次异常都能对应到明确的版本组合上。

本节按“选型—固件—系统—驱动工具—网络与管理”的顺序展开,最后给出一份可直接填写的环境基线记录表。

一、测试服务器选型

选型的第一原则是与目标验证场景一致。如果验证的是通用计算稳定性,应选择主流双路平台;如果验证的是高内存带宽或 NUMA 敏感型负载,则要优先保证内存通道满配。以一颗 64 核 EPYC 9004 系列为例,单路提供 12 个 DDR5 通道,双路即 24 个通道。若只插 8 条内存,通道利用率不足,带宽和延迟表现都会偏离真实部署形态,测出的“稳定”没有代表性。

建议在选型阶段明确以下要素:CPU 型号与步进(Stepping)、主板型号与 PCB 版本、内存容量/频率/rank 数/插槽分布、电源功率与冗余方式、散热方案(风冷或液冷、TDP 余量)、网卡与 HBA 型号、盘位与背板类型。其中 CPU 步进和主板 PCB 版本常被忽略,但它们是固件兼容性问题的高发点,必须记录。

散热余量建议按持续满载功耗的 1.2 倍以上配置。稳定性测试往往持续数小时到数十小时,风冷方案要确认机箱风道不会因加装加速卡而受阻;液冷方案要确认冷板覆盖范围与 EPYC 的 CCD/IOD 布局匹配。

二、BIOS 与 BMC 固件基线

固件是稳定性的“地基”。搭建时应先确定一个冻结版本,测试期间不随意升级。推荐做法是:从厂商支持列表中选择经过验证的 BIOS 与 BMC 组合,记录完整版本号(例如 BIOS 版本、AGESA 版本、BMC 版本、CPLD 版本),而不是只写“最新版”。

BIOS 侧需要重点确认的参数包括:内存频率是否运行在标称值、NUMA Nodes per Socket(NPS)设置、Determinism Slider、Global C-state Control、Package Power Limit、xGMI 链路速率、PCIe 链路速率与拆分方式。这些参数直接影响性能与稳定性边界。例如 NPS1 与 NPS4 在跨 NUMA 访问延迟上差异明显,若测试负载对延迟敏感,必须固定 NPS 设置并在报告中注明。

BMC 侧要确认带外管理可用、传感器读数正常、日志时间同步。建议在测试开始前清空一次 SEL 日志,便于后续定位新增事件。

固件基线一旦确定,应导出 BIOS 配置文件和 BMC 配置备份,作为环境快照保存。后续任何异常都可先与快照比对,快速判断是否有人改动过设置。

三、操作系统与内核参数

操作系统建议选择厂商认证的发行版与内核版本,例如 RHEL 9.x、Ubuntu 22.04 LTS 或 SLES 15 SP5。内核版本要与驱动、工具链匹配,避免使用过新的 mainline 内核引入未验证行为。

内核参数方面,稳定性测试常用以下几类:

  • 内存与 NUMA:numa_balancing 是否开启、transparent_hugepage 策略、vm.zone_reclaim_mode。
  • 调度与中断:isolcpus、nohz_full、rcu_nocbs,用于减少测试线程被干扰。
  • 日志与崩溃捕获:panic_on_oops=1、panic=30、kdump 服务开启,确保内核异常时能留下 vmcore。
  • 性能与功耗:cpufreq governor 设为 performance,关闭不必要的节能特性。

参数修改后应通过 grubby 或 grub2-mkconfig 持久化,并重启确认生效。可以用 cat /proc/cmdline 核对实际启动参数,避免“改了但没生效”。

四、驱动与工具链准备

驱动包括网卡、RAID/HBA、GPU 或加速卡驱动,以及 EPYC 平台相关的 amd_pstate、k10temp、edac 等内核模块。建议统一从发行版仓库或厂商认证包安装,记录驱动版本与固件版本。

工具链至少准备以下几类:压力测试工具(如 stress-ng、memtester、fio、iperf3)、监控工具(sensors、ipmitool、perf、sar)、日志与诊断工具(rasdaemon、mcelog、dmesg)。建议把工具版本一并写入基线记录,因为不同版本的压测行为可能不同。

五、测试网络与带外管理配置

测试网络建议与业务网络、管理网络分离。带内测试网用于跑 iperf3、fio over network 等负载;带外管理网用于 BMC 访问、远程开关机和串口重定向。两者使用不同网段和 VLAN,避免测试流量冲击管理通道。

带外管理要确认:BMC IP 可达、账号权限正确、SOL(Serial over LAN)可用、电源控制命令可执行。建议在测试前用 ipmitool 验证一次开关机和传感器读取,确保异常时能远程介入。

# 示例:检查内核启动参数与 NUMA 拓扑
cat /proc/cmdline
numactl --hardware
lscpu | grep -E "Model name|Socket|NUMA|MHz"

# 示例:检查 BMC 连通性与传感器
ipmitool -I lanplus -H 192.168.10.20 -U admin -P ****** chassis status
ipmitool -I lanplus -H 192.168.10.20 -U admin -P ****** sdr type temperature

下面这张图把本节的环境搭建要素组织成一条“基线固化链”,从硬件选型到管理通道,每一层都对应需要冻结和记录的版本信息。

稳定性验证环境基线固化链 每一层均需冻结版本并记录,形成可复现的环境快照 硬件选型 CPU 型号/步进 内存通道满配 · 散热余量 BIOS / BMC 固件 BIOS + AGESA + BMC 版本 NPS · C-state · 功耗墙 OS 与内核参数 发行版 + 内核版本 NUMA · panic_on_oops · kdump 驱动与工具链 驱动版本 压测/监控工具版本 带内测试网络 独立网段 / VLAN iperf3 · fio over network 带外管理通道 BMC IP / 账号权限 SOL · 远程开关机 · 传感器 环境基线快照 版本清单 + 配置备份 + 日志起点 任何异常先与快照比对,判断是环境漂移还是真实故障

六、环境基线记录表

把上述内容落成一张可填写的记录表,是本节最直接的交付物。建议在测试开始前填写完整,测试期间任何变更都要追加记录。

类别记录项示例值是否冻结
硬件CPU 型号 / 步进EPYC 9654 / Stepping B1是
硬件内存配置24×64GB DDR5-4800,12 通道满配是
固件BIOS / AGESA2.05 / 1.0.0.9是
固件BMC3.10.20是
系统OS / 内核RHEL 9.3 / 5.14.0-362是
系统关键内核参数panic_on_oops=1 numa_balancing=0是
驱动网卡 / HBA 驱动mlx5 24.10 / mpt3sas 42.0是
网络带内网段10.20.30.0/24是
管理BMC 地址 / 账号192.168.10.20 / admin是
测试期间若必须升级固件或内核,应视为一次新的环境基线,重新记录版本并重跑基线用例,不能把新旧版本的数据混在同一份稳定性结论里。

环境搭建完成后,建议先跑一轮短时冒烟测试:确认 CPU 满载、内存带宽、磁盘 IO、网络吞吐、BMC 传感器读数均正常,再进入长时间稳定性验证。这样可以把“环境没搭好”和“平台不稳定”两类问题尽早分开。