系统内存带宽测试
硬件配置
CPU:intel Xeon 8575C(48 核 96 线程,2个 node 节点,320MB L3 Cache,8通道)
内存:512GB(8*三星64GB DDR5 RECC 2Rx4 5600MT/s)
主板:超微 X13SEI-TF(版本 1.01,BIOS 版本 2.5)
软件配置
操作系统:Ubuntu 22.04.5 LTS(5.15.0-160-generic)
测试说明
包含 2 个软件:
-
Intel® Performance Counter Monitor
Intel 性能计数器监视器,硬件级监控,精确度高。用于比对软件测量结果。
-
内存带宽专用测试软件
硬件检测与理论带宽
这里使用 dmidecode 工具来检测硬件信息
sudo apt install dmidecode
sudo dmidecode -t memory
根据输出可以看到当前通道数,内存频率(Speed)和当前配置的频率(Configured Memory Speed)。
理论带宽计算公式(GB/s)= 频率(MT/s)* 通道数 * 通道宽度(Bytes)/ 1000
作者是 8 通道,5600MT/s,那么理论带宽为:5600*8*8/1000 = 358.4 GB/s
具体测试步骤
PCM
编译
git clone --recursive https://github.com/intel/pcm
cd pcm
mkdir build
cd build
cmake ..
cmake --build . --parallel -config Release
在 build/bin 目录下会生成 pcm-memor
stream
编译
git clone https://github.com/jeffhammond/STREAM.git
cd STREAM
gcc -O3 -fopenmp -DSTREAM_ARRAY_SIZE=1000000000 -mcmodel=medium -DNTIMES=10 stream.c -o stream
STREAM_ARRAY_SIZE 的设置可以参考 stream.c 文件中的注释,这里取了一个通用的较大值。
运行
为避免 NUMA 干扰,这里使用了 numactl 来控制内存分配策略,尽量跑出最高的带宽。
sudo pcm-memory 0.1 -csv=stream_bandwidth.csv -- numactl --cpunodebind=0,1 --membind=0,1 env OMP_NUM_THREADS=48 OMP_PLACES=cores OMP_PROC_BIND=spread stream
stream 会输出类似这样的表格,这里选择 Copy 作为测量结果。
-------------------------------------------------------------
Function Best Rate MB/s Avg time Min time Max time
Copy: 267174.4 0.041974 0.041920 0.042078
Scale: 259956.4 0.043536 0.043084 0.046525
Add: 263235.9 0.064184 0.063821 0.065625
Triad: 259668.1 0.064826 0.064698 0.065169
-------------------------------------------------------------
-
Copy:c[j] = a[j]
1次读取 + 1次写入。最纯粹的数据搬运测试。
-
Scale:b[j] = scalar * c[j]
1次读取 + 1次写入,外加一次简单的乘法运算。
-
Add:c[j] = a[j] + b[j]
2次读取 + 1次写入。
-
Triad:a[j] = b[j] + scalar * c[j]
2次读取 + 1次写入,外加一次乘法和一次加法。
pcm 会把采样数据保存到 stream_bandwidth.csv 文件中,使用以下命令获取硬件采集带宽:
awk -F, 'NR>2 {if($46>max) max=$46} END{print "Max Memory Bandwidth (GB/s):", max/1000}' stream_bandwidth.csv
或者计算前 10 个峰值的最大值
cut -d, -f46 stream_bandwidth.csv | tail -n +3 | sort -nr | head -n 10 | awk '{sum+=$1} END {print "Average of Top 10 Peak Bandwidth (GB/s):", sum/NR/1000}'
测试结果
| 次数 | 软件测量结果 | PCM 最大值 | PCM 最大 10 平均值 |
|---|---|---|---|
| 1 | 267.2 | 270.6 | 269.0 |
| 2 | 266.7 | 268.7 | 267.7 |
| 3 | 266.7 | 270.5 | 268.2 |
| 4 | 266.9 | 270.6 | 268.4 |
| 5 | 266.8 | 270.5 | 268.6 |
| 平均 | 266.7 | 270.2 | 268.7 |
根据理论带宽峰值 358.4 GB/s,达成率在 74%-75% 左右。
本站不记录浏览量,但如果您觉得本内容有帮助,请点个小红心,让我知道您的喜欢。