内存测试工具手册集合--南大通用

工具种类:
1、mbw内存带宽测试工具,
2、lmbench内存综合性能测试工具,
3、memtester内存压力测试工具,
4、sysbench内存申请速度测试工具,
5、Intel Memory Latency Checker内存访问延迟和带宽测试工具,
6、Stream内存带宽性能测试工具。
一、mbw内存带宽测试工具介绍:
1.mbw测试工具的定义mbw是一个内存带宽测试工具,通常用来评估用户层应用程序进行内存拷贝操作所能达到的带宽,可测试在内存拷贝(memcpy)、字符串拷贝(dumb)、和内存卡拷贝(mcblock)三种方式下的内存拷贝速度。
2.mbw测试工具的基本操作2.1安装ubuntu系统安装命令:apt install -y mbw
centos系统安装命令:
首先克隆项目到本地git clone https://github.com/raas/mbw.git
解压后切换路径cd mbw
编译并安装make
2.2运行运行代码:(./)mbw -q -n 10 124000
-q:隐藏日志 -n 10:表示运行10次 124000(MB):表示测试所用内存大小,用剩余内存的一半测试#结果分析: #只需关注平均值(AVG),内存分配速率越大,性能越好,三次AVG分别对应内存拷贝,字符串拷贝,内存卡拷贝。nohup mbw -q -n 10 124000 >> ./mbw.log 2>&1 & top -p mbw[pid]二、lmbench内存综合性能测试工具介绍:
1.lmbench测试工具的定义lmbench是个用于评价系统综合性能的多平台开源benchmark,能够测试包括文档读写、内存操作、进程创建销毁开销、网络等性能,测试方法简单。
lmbench是个多平台软件,因此能够对同级别的系统进行比较测试,反映不同系统的优劣势,通过选择不同的库函数我们就能够比较库函数的性能;更为重要的是,作为一个开源软件,lmbench 提供一个测试框架,假如测试者对测试项目有更高的测试需要,能够通过少量的修改源代码达到目的(比如现在只能评测进程创建、终止的性能和进程转换的开销,通过修改部分代码即可实现线程级别的性能测试)。
主要功能介绍:
带宽测评工具
读取缓存文件拷贝内存读内存写内存管道TCP反应时间测评工具
上下文切换网络:连接的建立,管道,TCP,UDP和RPChotpotato文件系统的建立和删除进程创建信号处理上层的系统调用内存读入反应时间其他
处理器时钟比率计算2.lmbench测试工具的基本操作2.1安装下载安装包:http://sourceforge.net/projects/lmbench/files/latest/download
解压:tar
命令行键入:make
编译测试:在命令行执行:make results,假如编译没有错误,会出现一些选择提示以对测试进行一个配置并生成配置脚本。【设置除了MB(默认值较大,耗时较长或程序运行不起来,取值大于4倍的外部缓存小于80%的物理内存即可)和Mailresults(输入no敲回车,意思不发送邮件回执)外,其他都选默认值】,lmbench会根据配置文档执行任何测试项,在results目录下根据系统类型、系统名和操作系统类型等生成一个子目录,测试结果文档存放于该目录下。测试执行时间较慢,需要等待大约半个小时。
结果查看:测试完毕后,执行make see,按照指引执行“cdresults && make summary >summary.out 2>summary.err”和“cd results && make percent >percent.out 2>percent.errs”可查看测试结果报告。则可以将测试数据/results/xxx/目录下的文件导出为测试报告/results/summary.out 文件,我们查看summary.out 文件就可以看测试结果了。
2.2运行运行代码:make results
执行后将会有以下选项提示需要设置:
MULTIPLE COPIES: 同时运行并行测试,对应生成结果中的 scal load 项;
Job placement selection: 作业调度控制方法,默认选 1,表示允许作业调度;
Options to control job placement: 默认选 1;
Memory: 设置为大于 4 倍的 cache size,该值越大结果越精确,同时运行时间越长;
SUBSET: 要运行的子集,包含 ALL /
HARWARE / OS / DEVELOPMENT,默认选 all;
FASTMEM、SLOWFS、DISKS、REMOTE… 等选项,均保持默认即可。
设置完成后测试程序开始运行,需要注意运行时间较久,需耐心等待,或先做其他事情至少 10 min 后再看。
查看结果:
执行 make see 查看运行结果,若只出现两行命令,显示运行结果输出到了 summary.out 文件中,则直接查看该文件即可。cat ./results/summary.out。
将会看到如下输出
参考文档:Lmbench 的使用方法以及解析运行结果 - 天外来客I - 博客园 (cnblogs.com)
三、memtester内存压力测试工具介绍:
1.memtester测试工具的定义memtester是一个内存压力测试工具,主要是捕获内存错误和一直处于很高或者很低的坏位,其测试的主要项目有随机值,异或比较,减法,乘法,除法,与或运算等等。通过给定测试内存的大小和次数,可以对系统现有的内存进行测试。
2.memtester测试工具的基本操作2.1安装2.1.1 ubuntu系统下载安装包 wget
http://pyropus.ca/software/memtester/old-versions/memtester-4.5.0.tar.gz
解压 tar -zxvf memtester-4.5.0.tar.gz
cd memtester-4.5.0/
make
make install
2.1.2 centos系统同上
2.2运行#先运行下面命令查看剩余内存,然后用剩余内存做压力测试
free -h
用法简介如下
memtester [-p PHYSADDR] [ITERATIONS]
MEMORY 申请测试内存的数量,单位默认是megabytes(兆),也可以是BKMG
ITERATIONS 测试的次数,默认是无限
如果要测试4G内存100次:./memtester 4G 100
如果要测试4G内存无限次:./memtester 4G
如果要后台无限测试: nohup memtester 240G > ./memtest.log 2>&1 &
番外:
a)可以申请大内存,放入后台无限测试: nohup memtester 240G >
./memtest.log 2>&1 &
b)可以利用脚本反复调用内存测试器程序,若最终均未发现内存报错和移位的问题,可见内存稳定性基本达标。
2.3其他退出码
0:正常退出
x01:内存分配或者锁定失败
x02:stuck
Address测试失败
x04:其他测试失败
四、sysbench内存申请速度测试工具介绍:
1.sysbench测试工具的定义sysbench 的 CPU测试是在指定时间内,循环进行素数计算,sysbench 是一个模块化的、跨凭条、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。主要包括以下几种方式的测试:1)CPU性能、2)磁盘io性能、3)线程调度性能、4)互斥锁性能、5)数据库性能、6)内存性能等。
2.sysbench测试工具的基本操作2.1安装2.1.1 ubuntu系统安装命令:sudo apt-get install sysbench
2.1.2 centos系统安装命令:sudo yum install sysbench
检查是否安装成功:sysbench –version
2.1.3 源码安装安装时常见报错:使用git bash编译安装sysbench时遇到的坑 - aaron8219 - 博客园 (cnblogs.com)
l 在https://github.com/akopytov/sysbench/tree/0.5下载sysbench-0.5.zip
源码包到本地某个目录下,如/usr/cqs/目录下;
l 在/etc/cqs/sysbench 目录下运行命令:unzip sysbench-0.5.zip,解压 zip 包,会生成sysbench-0.5目录;
l 进入 sysbench-0.5 目录,运行命令:./autogen.sh。注意:这一步可能会报错:automake 1.10.x(aclocal)wasn't found, exiting。这说明你的操作系统没有安装automake,运行命令:yum install automake.noarch,即可安装。然后再运行./autogen.sh命令,又报错:libtoolize
1.4+ wasn'tfound,exiting。说明你的操作系统没有安装 libtool,运行命令:yum install libtool,即可安装。继续运行。运行./configure --without-mysql(不编译测试 mysql 的功能模块,这个不用改成gbase,就用mysql,不加“--without-mysql”会报错 )
l make 后执行 make install(需要root用户执行)
l 运行 sysbench -help 测试是否安装成功。
2.2运行2.2.1 CPU测试运行代码:sysbench cpu
--cpu-max-prime=20000 run
CPU测试主要用于评估系统处理器的计算能力,具体表现为计算大素数所需的时间。常用的参数有:
l cpu-max-prime:素数生成数量的上限
1.-若设置为3,则表示 2、3、5(这样要计算1-5共5次)
2.-若设置为 10,则表示 2、3、5、7、11、13、17、19、23、29(这样要计算 1-29共 29次)
3.-默认值为 10000
l threads:线程数
1.-若设置为1,则sysbench 仅启动1个线程进行素数的计算
2.-若设置为2,则sysbench 会启动2个线程,同时分别进行素数的计算
3.-默认值为 1
l time:运行时长,单位秒
1.-若设置为5,则sysbench会在5秒内循环往复进行素数计算,
2.从输出结果可以看到在5秒内完成了几次,
3.比如配合--cpu-max-prime=3,则表示第一轮算得3个素数
4.如果时间还有剩就再进行一轮素数计算,直到时间耗尽。
5.每完成一轮就叫一个event
6.-默认值为 10
7.-相同时间,比较的是谁完成的event多
l events: event上限次数
1.-若设置为 100,则表示当完成100次event后,即使时间还有剩,也停止运行
2.-默认值为 0,则表示不限 event 次数
3.-相同event次数,比较的是谁用时更少
2.2.2 内存测试运行代码:sysbench
memory --memory-block-size=1M --memory-total-size=10G run
内存测试通过多次读取和写入内存块来评估内存的吞吐量。常用的参数包括:
--memory-block-size:指定内存操作的块大小(如1MB)。
--memory-total-size:设定测试总量,即总共要读写多少数据。
2.2.3 I/O磁盘测试:#生成16个测试文件,总大小2G,每个文件约129M
sysbench
fileio --file-num=16 --file-total-size=2G prepare
#采用随机读写的方式测试
sysbenchfileio
--file-num=16 --file-total-size=2G --file-test-mode=rndrw run
磁盘I/O测试用于模拟不同的磁盘操作模式,包括顺序或随机读写。常用参数有:
--file-total-size:指定要创建的测试文件总大小。
--file-test-mode:设置磁盘操作模式,可选值有seqwr(顺序写)、seqrd(顺序读)、rndwr(随机写)、rndrd(随机读)等。
#最后执行clearnup清除测试数据
sysbench --test=fileio
--file-num=16--file-total-size=2G --file-test-mode=rndrwcleanup
参考公众号:https://mp.weixin.qq.com/s/0Y66i1q010CfMySrcM82tA
数据库压力测试参考:尝试对GBase8a进行sysbench压力测试 - 墨天轮 (modb.pro)
五、Intel Memory Latency Checker内存访问延迟和带宽测试工具介绍:
1.Intel
Memory Latency Checker测试工具的定义Intel® Memory Latency Checker (Intel® MLC) 是一种用于测量内存延迟和带宽,以及它们如何随着系统负载的增加而变化的工具。它还为更细粒度的调查提供了几个选项,某些选项可以用来测量从一组特定处理器核到缓存或内存的带宽和延迟。
2.Intel
Memory Latency Checker测试工具的基本操作2.1安装安装命令:
下载安装包:
https://software.intel.com/content/dam/develop/external/us/en/documents/mlc_v3.9a.tgz
解压:tar -xf mlc_v3.9a.tgz
2.2运行运行代码:
cd mlc_v3.9a
chmod +x
./Linux/mlc
./Linux/mlc
--idle_latency -e -r -D8192
参数说明:
--idle_latency:测试系统在空闲状态下的内存延迟
-e:不对硬件 prefetcher做任何操作
-r:随机内存访问
-D:指定随机访问的范围的最大值
分析结果:
ns数值(内存延迟时间)越小越好。
六、Stream内存带宽性能测试工具介绍:
1.Stream测试工具的定义Stream是一款内存带宽性能测试基准工具,用于衡量系统在运行一些简单矢量计算时能达到的最大内存带宽和相应的计算速度,测试包括Copy(复制),Scale(乘法),Add(加法),Triad(三者复合)四种操作下的内存带宽表现;其四种操作对应的内存行为分别为:
Copy是复制操作,先访问一个内存单元读出其中的值,再将值写入到另一个内存单元。
Scale是乘法操作,先从内存单元读出其中的值,做一个乘法运算,再将结果写入到另一个内存单元。
Add是加法操作,先从内存单元读出两个值,做加法运算, 再将结果写入到另一个内存单元。
Triad是将Copy、Scale、Add三种操作组合起来进行测试。具体操作方式是:先从内存单元中中读两个值a、b,对其进行乘加混合运算(a + 因子 * b ),再将运算结果写入到另一个内存单元。
2.Stream测试工具的基本操作2.1安装2.1.1 ubuntu系统
2.1.2 centos系统安装命令:
安装依赖包:yum install gcc unzip -y
下载安装包并解压:
unzip STREAM-master.zip
编译:
cd STREAM-master
gcc stream.c -O3 -fopenmp
-DSTREAM_ARRAY_SIZE=2000000 -DNTIMES=10 -mcmodel=medium -o stream.out
执行命令后会在当前目录中生成一个stream.out命令。编译参数说明:
STREAM_ARRAY_SIZE 为测试集内存的大小,一般不小于CPU LLC(Last Level Cache)大小的4倍,值越大,测试时间越长。NTIMES 测试执行次数,程序将输出除第一次外其他结果中最好的结果,所以NTIME最小值为2。
2.2运行运行代码:./stream.out
分析结果:
root@freedom-u540:~/work/STREAM-master# ./stream.20M
-------------------------------------------------------------
STREAM version $Revision: 5.10 $
-------------------------------------------------------------
This system uses 8 bytes per array element.
-------------------------------------------------------------
Array size = 20000000 (elements), Offset = 0 (elements)
Memory per array = 152.6 MiB (= 0.1 GiB).
Total memory required = 457.8 MiB (= 0.4 GiB).
Each kernel will be executed 10 times.
The *best* time for each kernel (excluding the first iteration)
will be used to compute the reported bandwidth.
-------------------------------------------------------------
Number of Threads requested = 4
Number of Threads counted = 4
-------------------------------------------------------------
Your clock granularity/precision appears to be 1 microseconds.
Each test below will take on the order of 170454 microseconds.
(= 170454 clock ticks)
Increase the size of the arrays if this shows that
you are not getting at least 20 clock ticks per test.
-------------------------------------------------------------
WARNING -- The above is only a rough guideline.
For best results, please be sure you know the
precision of your system timer.
-------------------------------------------------------------
Function Best Rate MB/s Avg time Min time Max time
Copy: 1455.5 0.222349 0.219856 0.229256
Scale: 1205.2 0.266443 0.265518 0.267343
Add: 1309.9 0.368384 0.366434 0.371048
Triad: 1314.1 0.367992 0.365281 0.371307Best Rate表示执行不同操作的程序时内存与cpu之间的带宽,该值越高越好。