【浪潮信息KeyarchOS (KOS)】手把手教你用stream:内存带宽测试全流程解析
浪潮信息KOS是浪潮信息基于Linux Kernel、OpenAnolis等开源技术自主研发的一款服务器操作系统,支持x86、ARM等主流架构处理器,性能和稳定性居于行业领先地位,具备成熟的 CentOS 迁移和替换能力,可满足云计算、大数据、分布式存储、人工智能、边缘计算等应用场景需求。详细介绍见官网链接id=12126。
【浪潮信息KeyarchOS (KOS)】手把手教你用stream:内存带宽测试全流程解析
1 概述
浪潮信息KOS是浪潮信息基于Linux Kernel、OpenAnolis等开源技术自主研发的一款服务器操作系统,支持x86、ARM等主流架构处理器,性能和稳定性居于行业领先地位,具备成熟的 CentOS 迁移和替换能力,可满足云计算、大数据、分布式存储、人工智能、边缘计算等应用场景需求。详细介绍见官网链接https://www.ieisystem.com/kos/product-kos-xq.thtml?id=12126
stream是对内存带宽进行测试的工具,当前版本已经更新到最新5.10,适用于终端机和服务器的内存带宽测试,通过生成四种不同模式下的内存读写操作,测试高性能计算机的内存带宽,对内存性能进行评估和对比。
对于内存本身而言,内存的规格、运行频率、容量、CPU缓存等都可以影响内存性能,而本文评测内存的性能主要从内存带宽这一指标来评定。
内存带宽:内存带宽也叫“数据传输率”,是指每秒钟访问内存的最大bit数(或Byte数)。内存带宽代表的是内存总线所能提供的数据传输能力,但它决定于内存芯片和内存模组而非纯粹的总线设计。
针对内存的测试工具有很多,包括memtest、stressapptest、stream等,memtest主要针对内存正确性的测试,stressapptest主要针对内存的稳定性的测试,而stream主要针对内存带宽进行测试验证,具备准确的数据,更能突出内存的性能。
2 安装准备
2.1 操作环境
操作系统版本:KOS 5.8 sp2u1(5.10.134-17.2.2.kos5.x86_64)
测试架构:x86_64,8核4G虚拟机
2.2 软件版本
Stream 5.9
3 安装部署
官网下载stream-5.9.tar.gz安装包
tar -xvf stream-5.9.tar.gz解压安装包
工具暂时无需其他配置
4 执行测试
此工具有两种使用方式,具体使用根据个人需求选择
直接编译Makefile
make 编译stream工具中Makefile文件生成stream可执行文件
./Run.sh -n 1 -n 8 执行测试-数字代表进程数
生成的结果文件在stream工具目录下的result目录内
具体结果如下图所示
图 1 result目录
图 2 测试结果举例
预编译stream.c文件生成stream可执行文件
gcc -O3 -mtune=native -march=native -fopenmp -DSTREAM_ARRAY_SIZE=200000000 -DNTIMES=100 stream.c -o stream 预编译生成stream可执行文件,参数详解见表1
./stream 执行测试
具体结果如下图所示
图 3 测试结果举例
预编译参数详解见下表:
表1 预编译参数
参数 | 解析 |
---|---|
-O3 | 编译器编译优化级别 |
-mcmodel=small | 当单个Memory Array Size 大于2GB时需要设置此参数 |
-fopenmp | 适应多处理器环境;开启后,程序默认线程为CPU线程数 |
-DSTREAM_ARRAY_SIZE=200000000 | 指定计算中a[],b[],c[]数组的大小,部分版本stream为-DN=2000000形式设置 |
-DNTIMES=30 | 执行的次数,并且从这些结果中选最优值 |
-DOFFSET=4096 | 数组的偏移,一般可以不定义 |
5 数据分析
5.1 数据指标
Stream包括四种运算:Copy、Scale、Add、Triad。
Copy:复制需要两次访问内存,一次读一次写,单位8Byte,浮点计算次数0次。
Add:加法需要访问三次内存(两次读操作,一次写操作)
Scale:两次访问内存。
Triad:混合运算,需要三次访问内存。
结果记录第一列数据即为每一项运算内存带宽。
记录Copy Scale Add Traid 后的第一列数据,Best Rate,是进行十次运算后取最优。
5.2 数据分析
正常认知下,我们会觉得多线程结果分数要高于单线程较多,如果数据出现多线程数据只比单线程数据高一千左右,可考虑内存条是否为单通道模式。
表2 数据对比
单线程 | 多线程 | |
---|---|---|
拷贝速率 | 38460.6 | 50753.5 |
乘法速率 | 24196.5 | 43697.8 |
加法速率 | 26158.2 | 50872.1 |
混合速率 | 26432.0 | 48474.5 |
可以看到,单双通道情况下,单线程差异不大,差异七百左右,但是双通道模式情况下,多线程比单线程分数高出更多,差异六千左右。
数据结果过大异常,可考虑是否为数组大小设置过小,低于缓存大小的四倍使用的缓存进行了测试。
更多推荐
所有评论(0)