Linux服务器常见运维性能测试(2)内存测试mbw、stream
常见性能测试软件内存测试:1.mbw(内存带宽测试)内存测试:2.stream(读写响应测试)下载及编译最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。
这个系列是根据这次测试项目的相关测试总结,关于各种常见性能测试及拷机软件的整理。
本章为系列2,主要介绍
系列往期:Linux服务器常见运维性能测试(1)综合跑分unixbench、superbench
常见性能测试软件
综合测试:UnixBench(综合跑分),superbench(快速脚本)
内存测试:mbw(内存带宽测试),stream(读写响应测试)
CPU测试:super_pi
网络测试:netperf
IO测试:FIO、iometer
辅助监测:sensors、top、
内存测试:1.mbw(内存带宽测试)
内存带宽的计算公式是:带宽=内存核心频率×内存总线位数×倍增系数。简化公式为:标称频率位数。比如一条DDR3 1333MHz 64bit的内存,理论带宽为:133364/8=10664MiB/s = 10.6GiB/s。基于计算公式,我们可以得出内存的理论带宽,配合测试工具测试出实际带宽,方便我们查找问题,确认测试结果。
mbw作为一个内存宽带测试工具,可以测试在内存拷贝memcpy、字符串拷贝dumb、内存块拷贝mcblock三种不同方式下的内存拷贝速度。
下载地址:/raas/mbw/archive/refs/heads/master.zip
解压得mbw-master文件夹,进入文件夹执行编译安装,注意赋权限(同上文)
help获取相关参数说明:
./mbw -hmbw memory benchmark v1.4, /raas/mbwUsage: mbw [options] array_size_in_MiB #使用方式 单位MiBOptions:-n: number of runs per test (0 to run forever) #运行次数-a: Don't display average #不显示平均值-t0: memcpy test#内存拷贝-t1: dumb (b[i]=a[i] style) test#字符串拷贝-t2: memcpy test with fixed block size#内存块拷贝-b : block size in bytes for -t2 (default: 262144)-q: quiet (print statistics only)(will then use two arrays, watch out for swapping)'Bandwidth' is amount of data copied over the time this operation took.The default is to run all tests available.mpstat -P ALL 2 #2秒监视
一般会三种测试后查看平均值,平均值越高测试内存带宽越高。
e.g. ./mbw -n 10 256
分配2*33554432=536870912字节的内存。
使用262144字节作为块进行memcpy块复制测试。
内存测试:2.stream(读写响应测试)
stream由Virginia University提供,通过生成四种不同模式下的内存读写操作,用于测试高性能计算机的内存带宽。
主要测试内容如下:
结果会输出各项测试的速率及平均用时,按照测试速率越高,平均用时越短性能越高做参考。
下载及编译
下载地址1:GitHub - cheyang/STREAM: STREAM benchmark
下载地址2:Index of /stream/FTP/Code
下载后解压得到文件夹stream
编译:
编译参数如下:
# 参数介绍# -mtune=native -march=native 针对CPU指令的优化,此处由于编译机即运行机器。故采用native的优化方法。# -O3 编译器编译优化级别。# -mcmodel=medium 当单个Memory Array Size 大于2GB时需要设置此参数(小于2GB时设置无效)。# -fopenmp 适应多处理器环境,开启后,程序默认线程为CPU线程数。也可以在运行前设置进程数# 设置方法: export OMP_NUM_THREADS=x x为你想设置的线程数# -DSTREAM_ARRAY_SIZE=100000000:这个参数是对测试结果影响最大,也是最需要关注的一个参数,指定计算中a[],b[],c[]数组的大小。# -DNTIMES=40:执行的次数,并且从这些结果中选最优值
单线程编译:
# gcc -mtune=native -march=native -O3 -mcmodel=medium -DSTREAM_ARRAY_SIZE=200000000 -DNTIMES=30 stream.c -o stream.o
多线程编译(一般采用多线程编译):
# gcc -mtune=native -march=native -O3 -mcmodel=medium -fopenmp -DSTREAM_ARRAY_SIZE=200000000 -DNTIMES=30 stream.c -o stream.o
赋权限后可以运行stream.o(赋权同上)
./stream.o
测试结果一般的规律是Add > Triad > Copy > Scale。一次Add操作需要访问三次内存(两个读操作,一个写操作),Triad操作也需要三次访问内存, Copy和Scale操作需要两次访问内存。单位操作内,访问内存次数越多,越能够掩盖访存延迟,带宽越大。
如果觉得《Linux服务器常见运维性能测试(2)内存测试mbw stream》对你有帮助,请点赞、收藏,并留下你的观点哦!