服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-08-26 更新于 2026-08-26 简米科技 4,109 字 10 分钟阅读

如何在服务器上正确运行内存带宽测试程序?服务器内存带宽测试步骤详解

导读在服务器上跑内存带宽测试,正确的流程是先锁定CPU频率和NUMA拓扑,再选对工具、按平台调参,最后多轮取稳,任何一步跳过都可能让结果失真,很多人在服务器上测内存带宽,上来就装个工具跑一遍,数据好看就发报告,不好看就换参数再试,这种做法在个人电脑上问题不大,但在服务器上,从硬件架构到系统配置都更复杂,一次不严谨的……

在服务器上跑内存带宽测试,正确的流程是先锁定CPU频率和NUMA拓扑,再选对工具、按平台调参,最后多轮取稳,任何一步跳过都可能让结果失真。

很多人在服务器上测内存带宽,上来就装个工具跑一遍,数据好看就发报告,不好看就换参数再试,这种做法在个人电脑上问题不大,但在服务器上,从硬件架构到系统配置都更复杂,一次不严谨的测试得出的数据,不仅没有参考价值,甚至会误导后续的容量规划和性能调优,本文按实际运维场景,把整个流程拆开讲清楚。

测试前必须完成的环境准备

服务器与台式机的最大区别在于硬件规模和系统配置的复杂性,不先处理好环境,后面的数据没有讨论意义。

关闭CPU频率调节与节能状态

现代服务器CPU默认开启动态调频,负载高时频率拉升,空闲时自动降频,内存带宽测试属于短时高负载任务,如果频率在测试过程中波动,结果会随波逐流,无法反映真实水平。

操作路径如下:

  • 检查当前调频策略:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
  • 临时切换为性能模式:cpupower frequency-set -g performance
  • 在BIOS中关闭C-States和P-States(不同厂商命名不同,如“Package C State Limit”设为C0/C1)
  • 使用turbostatcpupower monitor确认测试期间频率稳定

业内专家指出,多数数据中心服务器在BIOS默认设置下,频率波动幅度可达数百MHz,对带宽测试结果的影响约为5%至10%。

确认NUMA拓扑与内存通道配置

服务器的内存控制器分布在多个CPU上,每个CPU直连的内存通道只对本地访问延迟最低,跨NUMA节点访问内存,带宽和延迟都会明显劣化。

执行lscpu查看NUMA节点数量,用numactl --hardware确认每个节点的内存分布,测试时必须绑定单个NUMA节点,否则操作系统会把内存分配打散到多个节点,测出的数据既不反映单节点能力,也无法用于横向对比。

预留干净的内存空间

测试期间,服务器上不应运行数据库、容器编排或日志采集等常驻服务,这些进程会持续占用内存带宽和缓存,干扰测试结果,建议使用systemctl临时停止非必要服务,或直接进入单用户模式执行测试。

内存带宽测试工具怎么选

工具选择取决于测试目的:测理论峰值用STREAM,测真实场景延迟用Intel MLC或lmbench,测多路CPU交叉带宽则需要更复杂的配置。

如何在服务器上正确运行内存带宽测试程序?服务器内存带宽测试步骤详解

STREAM是行业默认基准

STREAM是学术界和工业界最广泛认可的内存带宽测试程序,它通过四个数组操作(Copy、Scale、Add、Triad)测量持续内存带宽,几乎所有服务器厂商的规格表中,内存带宽数据都基于STREAM得出,这使其具备横向可比性。

STREAM的四个测试项含义如下:

  • Copy:从A数组读,写入B数组,测试纯读写带宽
  • Scale:读A数组,乘系数后写入B数组,加入简单计算
  • Add:读A和B数组,相加后写入C数组,测试多流并发能力
  • Triad:读A和B数组,乘以系数再加C,最接近真实计算模式

对比测试用Intel MLC或AMD uProf

Intel平台推荐使用Intel Memory Latency Checker,它能同时测带宽、延迟和偏斜,适合做细粒度分析,AMD平台对应工具为AMD uProf中的内存带宽计数器,可读取硬件性能计数器,测出的数据更贴近物理层。

下表为三种主流工具的核心差异:

工具名称 测量维度 适用平台 输出指标
STREAM 持续带宽 全平台 Copy/Scale/Add/Triad带宽
Intel MLC 带宽+延迟 Intel 读延迟、各操作带宽、偏斜
AMD uProf 带宽+硬件计数器 AMD 实际内存控制器流量

内存带宽测试iperf能测吗

这是一个常见的误解。iperf是网络性能测试工具,测的是网卡到网卡的数据传输速率,与内存带宽没有任何关系。 虽然iperf的数据在传输过程中会经过内存,但它的瓶颈通常在网卡或协议栈,测出的数字不能反映内存子系统的真实性能。

服务器内存带宽测试命令与执行细节

选好工具后,编译参数和测试方式直接影响结果的可靠性,这一环节出错的人最多。

STREAM的编译参数决定结果上限

STREAM的默认编译参数针对通用场景优化,直接gcc stream.c -o stream编译出来的程序跑出的数据往往偏低,合理做法是:

gcc -O3 -march=native -fopenmp -DSTREAM_ARRAY_SIZE=80000000 -DNTIMES=20 stream.c -o stream

参数说明:

  • -O3:最高优化级别,启用向量化
  • 如何在服务器上正确运行内存带宽测试程序?服务器内存带宽测试步骤详解

  • -march=native:针对当前CPU指令集优化,启用AVX-512(如支持)
  • -fopenmp:启用多线程并行,配合OMP_NUM_THREADS环境变量控制线程数
  • -DSTREAM_ARRAY_SIZE=80000000:数组大小设为约640MB(8字节×80000000),确保远超CPU缓存容量
  • -DNTIMES=20:每项测试重复20次取最优,减少系统噪音干扰

执行测试时,用numactl绑定单个NUMA节点:

export OMP_NUM_THREADS=16
numactl --cpunodebind=0 --membind=0 ./stream

结果解读与有效数据筛选

STREAM输出的五个数值中,以Triad结果作为主要参考值,因为它的数据流模式最接近科学计算和数据库扫描等真实负载。

判断测试是否有效,看两个指标:

  • 各次测试结果的标准差应小于2%,若波动过大说明系统不稳定
  • 实测带宽不应超过理论峰值的85%至90%,若接近或超过,大概率是数组大小设置过小,数据落入缓存

多轮测试与数据记录规范

一次测试结果不足以得出结论,建议在同一配置下连续跑5轮,每轮之间间隔30秒,取中位数作为最终结果,记录信息应包含CPU型号、内存类型(DDR4还是DDR5)、内存频率、通道数、BIOS版本和内核版本,缺少这些背景的带宽数据无法复现。

DDR5内存带宽测试与DDR4差异大吗

近年来的服务器新品已全面转向DDR5,两者的测试流程和注意事项有较大区别。

DDR5的通道架构改变

DDR5内存每个通道分为两个子通道,每个子通道独立访问,理论上同等频率下带宽是DDR4的两倍,但DDR5的延迟比DDR4高,实测延迟数据通常不如DDR4亮眼。

测试DDR5服务器时,需额外关注:

  • BIOS中确认内存频率:DDR5默认以JEDEC标准频率运行,开启XMP或EXPO后可达更高频率,但服务器平台通常不支持超频,以BIOS设置的最高稳定频率为准
  • On-Die ECC的影响:DDR5内置错误纠正功能,在读取过程中会增加延迟,这是正常现象,不需要当作故障处理

调优参数差异

DDR4平台常见的优化手段是调整Command Rate(如2T改1T),DDR5平台上这个参数的影响变小,更值得关注的是Page Policy和Refresh Rate的设置,部分BIOS提供“Performance”和“Power Saving”两种内存预设,测试时应明确当前所处的预设模式。

常见误区与排查思路

测试线程数越多越好

并非如此,线程数超过内存控制器饱和点后,带宽不再提升,反而因缓存争抢和调度开销导致下降,通常线程数等于该NUMA节点的物理核心数即可,超线程带来的收益可忽略不计。

忽略系统日志中的内存错误

测试前应查看dmesgrasdaemon日志,确认没有内存CE(可纠正错误)和UE(不可纠正错误)记录,若存在CE报错,说明内存颗粒有故障隐患,测出的带宽数据可能偏低,建议先更换内存再测试。

只测带宽不测延迟

带宽和延迟是内存性能的两面,对延迟敏感的应用(如高频交易、Redis缓存)而言,低延迟比高带宽更有价值,完整的内存性能评估应同时包含带宽和延迟数据。

内存带宽测试后如何验证结果

测试完成后,将实测数据与理论峰值对比,可判断系统是否处于健康状态,理论峰值计算公式为:内存频率乘以8字节(64位总线宽度)乘以通道数,DDR5-4800八通道的理论带宽为4800×8×8=307.2GB/s,实测达到270GB/s左右即为正常水平。

常见问题解答

服务器内存带宽测试结果偏低怎么办?

先排查CPU频率是否锁定,再确认数组大小是否超出缓存容量,最后检查是否绑定NUMA节点,若以上均正常,尝试更换测试工具交叉验证,Intel平台可用MLC,AMD平台可用uProf,两者结果相互印证,若多工具结果一致偏低,考虑内存运行频率是否达到标称值,进入BIOS确认内存频率和时序设置。

STREAM测试中Copy和Triad哪个更值得关注?

多数行业报告中以Triad作为主要参考,因为它包含读、写和计算三种操作,最接近真实负载模式,Copy反映纯内存搬运能力,适合评估数据迁移类任务,完整报告中应同时列出四项结果,并说明以哪一项作为核心指标。

云服务器能测内存带宽吗?

云服务器的物理内存由虚拟化层管理,测试结果受宿主机邻居干扰和虚拟CPU调度影响,数据波动较大,且无法关闭CPU调频和修改BIOS设置,多数云厂商不承诺内存带宽性能,测试结果仅能作为参考,不能用于与裸机服务器对比。

内存带宽测试的价值在于对比,与同平台同配置的历史数据对比,与理论峰值对比,与厂商公开数据对比,单一数字没有意义,但一套规范流程下产出的可靠数据,能帮助你在容量规划、硬件选型和故障排查中做出更准确的判断。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱