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 日志,便于后续定位新增事件。
三、操作系统与内核参数
操作系统建议选择厂商认证的发行版与内核版本,例如 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。 - 性能与功耗:
cpufreqgovernor 设为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 型号 / 步进 | EPYC 9654 / Stepping B1 | 是 |
| 硬件 | 内存配置 | 24×64GB DDR5-4800,12 通道满配 | 是 |
| 固件 | BIOS / AGESA | 2.05 / 1.0.0.9 | 是 |
| 固件 | BMC | 3.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 传感器读数均正常,再进入长时间稳定性验证。这样可以把“环境没搭好”和“平台不稳定”两类问题尽早分开。