超频服务器测评指南
超频机的价值在于"稳定地快"。本指南给出我们在交付中使用的验证流程、命令与判读方法——每次更换 BIOS、微码、内核或调整超频参数后,都应重新执行。
开始之前:安全须知
- Prime95 / mprime 的 small FFT、y-cruncher 的 AVX-512 负载发热和功耗极高,必须有人值守,同时观察封装功耗、VRM 温度、水泵转速与冷却液温度。
- 不要超出厂商超频配置提高电压。出现降频、风扇或水泵告警时立即停止。
- 验证期间保持 ECC 纠错上报开启。tuned 的
cpu-partitioning配置集会设置ignore_ce=1,部分调优手册使用mce=ignore_ce启动参数——两者都会掩盖纠正错误,烤机阶段必须关闭。 - i9-14900KS 等 13 / 14 代桌面平台需先确认微码 ≥ 0x12B(Intel Vmin Shift 问题)。
- 整机功耗可达 2 kW 级,双路电源接不同 PDU;机房环境温度按厂商要求(如 Hypertec 要求 10–25 °C)。
流程总览
完整验证约 48–72 小时(部分厂商烤机长达 14 天)。下表中的"通过"标准为经验参考值,不构成任何标准。
| 阶段 | 工具 | 时长 | 通过标准(经验参考) |
|---|---|---|---|
| 0. 基线记录 | xmhls-sysinfo、lscpu、lstopo、ipmitool、rasdaemon | 30 分钟 | 记录 BIOS / 微码版本,设置 BMC 温度阈值 |
| 1. 离线内存 | Memtest86+ | ≥ 4 遍(8–24 小时) | 0 错误 |
| 2. CPU 与内存压力(值守) | stress-ng、stressapptest、memtester、y-cruncher、mprime | 各 2–4 小时 | 0 测试错误、无降频 |
| 3. 混合浸泡 | stress-ng 混合负载 + iperf3 打流 | 12–24 小时 | 0 次可纠正 / 不可纠正错误 |
| 4. 延迟与抖动 | hwlatdetect(空闲),cyclictest(隔离核,空闲与带载) | 2 小时 + 12–24 小时 | 见结果判读 |
| 5. 内存延迟与带宽 | Intel MLC、STREAM | 数分钟 | 与厂商调校后基线相当 |
| 6. 网络与时钟 | sockperf、ptp4l / phc2sys、ethtool 计数 | 1–2 小时 | 尾延迟稳定、网卡无丢包 |
基线与监控
压力测试全程在另一个终端持续监控频率、温度、功耗与硬件错误:
# 每 5 秒:每核忙碌度、实际频率、中断、SMI 计数、温度与封装功耗
turbostat --quiet --interval 5 --show Busy%,Bzy_MHz,IRQ,SMI,CoreTmp,PkgTmp,PkgWatt
# 内存可纠正 / 不可纠正错误计数(EDAC)与 rasdaemon 汇总
grep -H . /sys/devices/system/edac/mc/mc*/[cu]e_count
ras-mc-ctl --summary
# BMC 侧温度传感器与事件日志
ipmitool sdr type Temperature
ipmitool sel elist | tail -20
稳定性 / 烤机
# CPU:全部核心、全部算法、结果校验,显示温度区与指标
stress-ng --cpu 0 --cpu-method all --verify --tz --metrics-brief -t 2h
stress-ng --matrix 0 --tz --metrics-brief -t 1h
# 内存:--vm-bytes 为所有 worker 共享的总量
stress-ng --vm 4 --vm-bytes 75% --verify --metrics-brief -t 2h
stressapptest -s 7200 -M <约 80% 内存,单位 MB> -W
memtester 16G 3
# 高强度:仅限值守
./mprime -t # Prime95 torture test
y-cruncher 的压力测试在其交互菜单的 "Stress Test" 中启动,命令行用法见程序包内的 Command Lines.txt。
延迟与抖动
hwlatdetect 检测 SMI 等硬件 / 固件造成的 CPU 停顿,须在空闲机器上运行(会临时独占 CPU)。cyclictest 在隔离核上测调度唤醒延迟,先空载、再在其余核施加负载各测一次。
# 硬件延迟:阈值 10 µs(内核默认),2 小时
hwlatdetect --duration=2h --threshold=10 --report=hwlat.txt
# 调度延迟:隔离核 2-15,主线程放在管理核 0,200 µs 间隔,直方图上限 200 µs,12 小时
cyclictest -m -p99 -t 14 -a 2-15 --mainaffinity=0 -i 200 -h 200 -q -D 12h --json=ct.json
内存延迟与带宽
# Intel MLC(需 msr 模块):空载延迟、NUMA 延迟矩阵、带载延迟、核间延迟
modprobe msr
./mlc --idle_latency
./mlc --latency_matrix
./mlc --loaded_latency
./mlc --c2c_latency
# STREAM:每个数组至少为全部 L3 总和的 4 倍(下例约 640 MB / 数组,适用于 L3 ≤ 160 MB)
gcc -O3 -march=native -fopenmp -mcmodel=medium -DSTREAM_ARRAY_SIZE=80000000 stream-5.10.c -o stream
OMP_PROC_BIND=spread ./stream
公开发布 STREAM 结果须遵守其许可中的标注规则(见下载中心的 stream-LICENSE.txt)。
网络与时钟同步
# 往返延迟:服务端与客户端各一台;前缀 onload --profile=latency 或 exasock 可测内核旁路
sockperf server -i <服务端 IP> -p 11111
sockperf ping-pong -i <服务端 IP> -p 11111 -m 64 -t 60 --mps=max
# 请求-响应延迟(含 P99)
netperf -H <服务端 IP> -t TCP_RR -l 60 -- -o MIN_LATENCY,MEAN_LATENCY,P99_LATENCY,MAX_LATENCY
# PTP:网卡硬件时钟同步主时钟,再把系统时钟同步到网卡时钟
ptp4l -i <网卡> -H -s -m
phc2sys -s <网卡> -c CLOCK_REALTIME -w -m
# 网卡错误与丢包计数、中断合并设置
ethtool -S <网卡> | grep -iE 'drop|err|miss'
ethtool -c <网卡>
结果判读
以下为经验参考值,用于发现问题,不构成任何标准;具体验收线应结合策略需求与厂商基线约定。
| 检查项 | 良好 | 需要处理 |
|---|---|---|
| hwlatdetect | 1–2 小时内无超过 10 µs 的样本 | 反复出现 10–100 µs 尖峰,多为固件 SMI(对照 turbostat 的 SMI 列) |
| cyclictest(隔离核,已调优) | 12–24 小时最大值约 ≤ 10 µs | 超过 50–100 µs 或尾部持续增长:排查中断、内核线程、定时器、SMI |
| 机器检查 / ECC(MCE、EDAC、rasdaemon) | 0 次可纠正、0 次不可纠正 | 出现任何可纠正错误即说明超频余量不足,应回退频率或时序;不可纠正错误直接判定不通过 |
| 温度与频率 | 最坏 AVX 负载下封装约 ≤ 85 °C(上限:AMD 95 °C、i9-14900KS 100 °C、285K 105 °C),Bzy_MHz 维持目标频率 | 降频、频率波动,BMC 事件日志出现 VRM 告警 |
| 内存延迟(MLC) | 接近厂商调校后公布值(如 Blackcore 公布 66–93 ns) | 劣于默认配置,或测试中出现任何错误 |
| 网络 | sockperf / netperf 尾延迟稳定,ethtool 计数无丢包 | 丢包、错误计数增长,P99 抖动大 |
低延迟调优清单
每项改动都应记录前后对比数据。链接均为内核文档或厂商官方调优指南。
| 层面 | 建议设置 | 参考 |
|---|---|---|
| BIOS | 关闭 C1E / C6 与封装级 C-state;关闭 SMT;保持 Turbo;关闭硬件节能、VT-d / IOMMU 与不需要的监控功能。AMD 另有 Global C-state、DF C-state、APBDIS=1、Determinism=Power、ASPM、NPS 等项 | Intel 延迟优化指南 · AMD 低延迟调优 |
| 内核启动参数 | isolcpus=managed_irq,domain,<cpus>、nohz_full=、rcu_nocbs=、irqaffinity=<管理核>;idle=poll(AMD)或 intel_idle.max_cstate=0 processor.max_cstate=0;skew_tick=1 tsc=reliable nosoftlockup | 内核参数 · NO_HZ · 每 CPU 内核线程 |
| tuned 配置集 | latency-performance(性能调速器、限制 C-state)→ network-latency(另关 THP、busy_poll、numa_balancing=0)→ cpu-partitioning(核隔离,注意其 ignore_ce) | tuned · RHEL 实时调优 |
| 中断 | 停用 irqbalance 或排除隔离核;网卡队列中断绑到同一 NUMA 节点的管理核(/proc/irq/N/smp_affinity_list) | IRQ 亲和性 |
| 调速器与内存 | 调速器 performance;透明大页 never(或按应用评估) | cpufreq · 透明大页 |
| 网卡与内核旁路 | 关闭中断合并(ethtool -C <网卡> adaptive-rx off rx-usecs 0)与 LRO;评估 Onload / ExaSOCK / TCPDirect / ef_vi | Onload 用户指南 |
可用 xmhls-lowlat-check 快速检查当前系统落实了哪些项。
使用华莱硕脚本
三个脚本均可在下载中心获取。下载后先核对 SHA256,再以 root 运行(部分信息需要 root 才能读取):
curl -fsSLO https://xmhls.com/downloads/scripts/xmhls-sysinfo-1.0.0.sh
curl -fsSLO https://xmhls.com/downloads/SHA256SUMS
sha256sum -c SHA256SUMS --ignore-missing
xmhls-sysinfo:硬件与系统盘点(只读)
sudo bash xmhls-sysinfo-1.0.0.sh # 输出到终端
sudo bash xmhls-sysinfo-1.0.0.sh -o sysinfo-$(hostname).txt # 同时保存报告
采集 OS / 内核与启动参数、BIOS 与主板、CPU 型号 / 微码 / 频率、内存条规格与 ECC、NUMA 拓扑、PCIe 网卡与加速卡、网卡驱动与固件、磁盘、时钟同步状态。缺少的工具会标注 NA 并继续。
xmhls-lowlat-check:低延迟调优体检(只读)
sudo bash xmhls-lowlat-check-1.0.0.sh
sudo bash xmhls-lowlat-check-1.0.0.sh --isolated 2-15 --nic ens1f0 # 核对预期的隔离核与交易网卡
逐项输出 PASS / WARN / INFO 与建议值:调速器、C-state、SMT、Turbo、核隔离与 nohz_full、irqbalance、透明大页、NUMA 自动均衡、定时器迁移、时钟源、网卡中断合并、时钟同步。只读取状态,不做任何修改。
xmhls-burnin:分阶段烤机(会施加满负载)
sudo bash xmhls-burnin-1.0.0.sh --dry-run # 只打印计划与命令,不执行
sudo bash xmhls-burnin-1.0.0.sh --phase cpu --duration 30m # 单阶段
sudo bash xmhls-burnin-1.0.0.sh --phase all --duration 2h --max-temp 90 --cpus 2-15
- 阶段:
cpu(stress-ng CPU + 矩阵)、mem(stressapptest 或 stress-ng vm)、latency(hwlatdetect + 隔离核上的 cyclictest),all依次执行;--duration为每阶段时长。 - 全程按
--interval(默认 10 秒)记录最高温度、平均频率、EDAC 计数到 CSV;温度超过--max-temp(默认 90 °C)立即终止并判定失败。 - 结束时对比前后的 EDAC 计数与内核 MCE 日志,输出各阶段 PASS / FAIL;结果目录含全部原始输出,可直接作为测评记录归档。
- 未加
--yes时会先显示计划并等待确认。