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

可以看到,单双通道情况下,单线程差异不大,差异七百左右,但是双通道模式情况下,多线程比单线程分数高出更多,差异六千左右。

数据结果过大异常,可考虑是否为数组大小设置过小,低于缓存大小的四倍使用的缓存进行了测试。

Logo

更多推荐