Linux性能测试工具整理

本文详细介绍了Unixbench、lmbench、stream、iozone、fio、netperf和SPEC2000/2006等性能测试工具的使用方法、功能和测试步骤,强调了它们在评估系统性能、CPU、内存、磁盘、网络以及编译器优化等方面的重要性。
摘要由CSDN通过智能技术生成

性能测试工具:Unixbench lmbench stream iozone fio netperf spec2000 spec2006

一、unixbench
unixbench主要是用于系统基础性能测试,unixbench也包含一些非常简单的2D和3D图形测试
UnixBench一个基于系统的基准测试工具,不单纯是CPU 内存 或者磁盘测试工具。测试结果不仅仅取决于硬件,也取决于系统、开发库、甚至是编译器
【测试步骤】
1、下载工具并解压
tar -xvf UnixBench5.1.3-1.tar.bz2
#cd unixbench-5.1.3-1
2.修改解压后文件夹中的Makefile文件:
修改第50行:
GL_LIBS = -lGL -lXext -lX11

GL_LIBS = -lGL -lXext -lX11 -lm
3.编译:#make all
4.查看CPU核数:#lscpu
5.执行测试:
单线程测试 ./Run -c 1
四线程测试 ./Run -c 4
八线程测试 ./Run -c 8
十六线程测试 ./Run -c 16
三十二线程测试 ./Run -c 32

二、lmbench
用时间、shell命令启动时间、系统信号处理时间、统计2p/16K的上下文切换性能、16p/64K的上下文切换性能、0K/10K文件创建时间、0K/10K文件删除时间
Lmbench 是一款简易可以移植的内存测试工具,其主要功能有,带宽测评(读取缓存文件、拷贝内存、读/写内存、管道、TCP),延时测评(上下文切换、网络、文件系统的建立和删除、进程创建、信号处理、上层系统调用、内存读入反应时间)等功能。
【测试步骤】
1.将lmbench工具拷贝到系统下,并解压赋权限:
#tar -xvf lmbench-3.0-a9-1.tar.bz2
#cd lmbench-3.0-a9-1
#chmod -R 777 *
2.进入lmbench目录,终端执行:
#make results 进入交互式模式
根据提示信息,选择默认设置回车继续,其中,在选择内存的时候输入10000,保证测试能够尽可能的加快,邮件时选择no
MULTIPLE COPIES[DEFAULT 1]: (默认回车)
Job placement selection[DEFAULT 1]: (默认回车)
MB[default 182159]:4096 (输入4096)
SUBSET (ALL|HARWARE|OS|DEVELOPMENT)[default all]:(默认回车)
FASTMEM[default no]:(默认回车)
SLOWFS[default no]: (默认回车)
DISKS[default none]:(默认回车)
REMOTE[default none]: (默认回车)
Processor mhz[default 2599MHz,0.3848 nanosec clock]: (默认回车)
FSDIR[default /usr/tmp]: /usr/tmp
Status output file [default /dev/tty]: (默认回车)
Mail results [default yes]: no (设置为no)
3.进入lmbench目录,终端执行:
#make see

三、stream
Stream测试是一个简单的综合基准测试程序,它测量可持续的内存带宽(MB/s)。Stream通过fortran和c两种高级且高效的语言编写完成,由于这两种语言在数学计算方面的高效率, 使得stream测试例程可以充分发挥出内存的能力。Stream对于CPU的计算能力要求很小,对CPU内存带宽压力很大。
1.Copy是复制操作
从内存单元中读取一个数,并复制到其他内存单元中
2.Scale是乘法操作
从内存单元中读取一个数,与常数相乘,得到的结果存到其他内存单元。
3.Add是加法操作
从两个内存单元中分别读取两个数,将其进行加法操作后,得到的结果写入另一个内存单元中。
4.Triad是加法、乘法和复制三种操作的结合
从内存中读取一个数,与一个常数相乘得到一个乘积,然后从另一个内存单元中读取一个数与刚才乘积结果相加,得到的结果写入内存。

测试的一般规律是Add>Triad>Copy>Scale。因为一次Add和Triad操作都需要三次访问内存,Copy和Scale操作需要进行两次访问内存,访问内存次数越多越能够掩盖访存延迟,带宽越大。

【测试步骤】
1.登录系统,将stream工具包拷贝至系统
2.在终端中输入:
$sudo su
#tar -xvf stream-5.9-1.tar.bz2
#cd stream-5.9-1
#make
3.继续执行如下步骤:
#./Run.sh -n 1 -n 4 -n 8 -n 16
【注】这里的-n参数的值根据实际CPU核数设定,如只有4核,只跑./Run -n 1 -n 4

四、iozone
测试硬盘读写性能(Mb/s),包括随机和顺序读写平均读写速度(IOzone设置块大小16M,文件大小为物理内存2倍、1倍、1/2倍三组数据)
Iozone执行以下操作测试文件I/O性能:

Read, write, re-read, re-write, read backwards, read strided, fread, fwrite, random read/write, pread/pwrite variants, aio_read, aio_write, mmap

【测试步骤】
1.登录系统,拷贝iozone测试工具包至系统
2.解压工具:#tar -xvf iozone.tar -C /home/kylin
安装工具:#cd /home/kylin/iozone/src/current
编译 make
安装:
arm平台执行该步骤执行如下命令:#make linux-arm
x86平台执行该步骤执行如下命令:#make
龙芯平台执行该步骤使用如下命令:#make linux
3.输入执行命令:sudo ./iozone -s *G -r 16M -i 0 -i 1 -i 2 -f /home/data -Rb .xls
//
.xls为测试结果文件,可自己定义成自己理解的文件名,但是后缀一定是xls
//-s参数是指文件大小,分别设置为物理内存的2倍、1倍、1/2倍测试
//-r制定测试块的大小
//-f参数是指定测试文件的名字,完成后会自动删除(这个文件必须指定你要测试的那个硬盘中)
//-i #用来指定运行哪个测试。 (0=write/rewrite, 1=read/re-read, 2=random-read/write
3=Read-backwards, 4=Re-write-record, 5=stride-read, 6=fwrite/re-fwrite, 7=fread/Re-fread,
8=random mix, 9=pwrite/Re-pwrite, 10=pread/Re-pread, 11=pwritev/Re-pwritev, 12=preadv/Re-preadv).
总是需要先进行0号测试以便后面的测试有文件可以测试。
也支持使用-i # -i # -i # 以便可以进行多个测试。

五、fio
FIO 是一个多线程IO生成工具,可以生成多种IO模式(随机、顺序、读、写四大类),用来测试磁盘设备的性能。GFIO是FIO的图形监测工具,它提供了图形界面的参数配置,和性能监测图像
【测试步骤】
编译安装:
wget https://git.kernel.dk/cgit/fio/snapshot/fio-3.12.tar.gz
tar -xzf fio-3.12.tar.gz
cd fio-3.12
./configure --cc=${CROSS_COMPILE}gcc --extra-cflags=-static --extra-cflags=-static
make && make install

执行fio-test.sh测试脚本
生成fio-test.sh测试脚本
#!/bin/bash
numjobs=10
iodepth=10
mkdir /test
for rw in read write randread randwrite randrw;do
for bs in 4 16 32 64 128 256 512 1024;do
mkfs.ext4 -F /dev/nvme0n1
mount /dev/nvme0n1 /test
if[ $rw == “randrw” ];then
./fio -filename=/test/fio -direct=1 -iodepth i o d e p t h − t h r e a d − r w = {iodepth} -thread -rw= iodepththreadrw=rw -rwmixread=70 -ioengine=libaio -bs= b s k − s i z e = 100 G − n u m j o b s = {bs}k -size=100G -numjobs= bsksize=100Gnumjobs={numjobs} -runtime=30 -group_reporting -name=job1
else
./fio -filename=/test/fio -direct=1 -iodepth i o d e p t h − t h r e a d − r w = {iodepth} -thread -rw= iodepththreadrw=rw -ioengine=libaio -bs= b s k − s i z e = 100 G − n u m j o b s = {bs}k -size=100G -numjobs= bsksize=100Gnumjobs={numjobs} -runtime=30 -group_reportin -name=job1
fi
umount /test
sleep 30
done
done

【参数介绍】
filename=/dev/emcpowerb 支持文件系统或者裸设备,-filename=/dev/sda2或-filename=/dev/sdb
direct=1 测试过程绕过机器自带的buffer,使测试结果更真实
rw=randread 测试随机读的I/O
rw=randwrite 测试随机写的I/O
rw=randrw 测试随机混合写和读的I/O
rw=read 测试顺序读的I/O
rw=write 测试顺序写的I/O
rw=rw 测试顺序混合写和读的I/O
bs=4k 单次io的块文件大小为4k
bsrange=512-2048 同上,提定数据块的大小范围
size=5g 本次的测试文件大小为5g,以每次4k的io进行测试
numjobs=30 本次的测试线程为30
runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止
ioengine=psync io引擎使用pync方式,如果要使用libaio引擎,需要yum install libaio-devel包
rwmixwrite=30 在混合读写的模式下,写占30%
group_reporting 关于显示结果的,汇总每个进程的信息
此外
lockmem=1g 只使用1g内存进行测试
zero_buffers 用0初始化系统buffer
nrfiles=8 每个进程生成文件的数量

六、netperf
测试网络传输速率、网络吞吐率、网络响应时间等,包括 TCP、UDP流吞吐速率等
【测试步骤】–两个机器之间的网络测试
1.准备两台测试机A(sut)和B(client),分别测试工具包netperf.tar.gz ,并切换到目录netperf,arm配置:./configure -build=alpha
x86、龙芯配置:./configure
编译:make
安装:sudo make install
2.在机器A上执行netserver脚本启动监听服务
3.在机器B上执行netperf命令
#netperf -H sut_ip -t TCP_STREAM -l 60 > netperf.txt
#netperf -H sut_ip -t UDP_STREAM -l 60 >> netperf.txt
#netperf -H sut_ip -t TCP_RR -l 60 >> netperf.txt
#netperf -H sut_ip -t TCP_CRR -l 60 >> netperf.txt
#netperf -H sut_ip -t UDP_RR -l 60 >> netperf.txt

【测试步骤】–独立机器之间的测试步骤
安装依赖包
yum install automake -y

1.下载编译源码包,并运行
wget https://github.com/HewlettPackard/netperf/archive/netperf-2.7.0.tar.gz
tar -xzf netperf-netperf-2.7.0.tar.gz
cd netperf-netperf-2.7.0
echo ‘ac_cv_func_setpgrp_void=yes’ > config.cache
./autogen.sh

编译:
./configure CC=${CROSS_COMPILE}gcc CFLAGS=-static --host=loongarch64 --build=arm CFLAGS=-fcommon --config-cache
make && make install

2.执行测试命令
切换到src目录,目录下生成test-netper.sh测试脚本内容如下
host_ip=$1
for i in 1 64 128 256 512 1024 1500 2048 4096 9000 16384 32768 65536;do
./netperf -t TCP_STREAM -H $host_ip -l 60 – -m $i
done
for i in 1 64 128 256 512 1024 1500 2048 4096 9000 16384 32768;do
./netperf -t UDP_STREAM -H $host_ip -l 60 – -m $i -R 1
done
./netperf -t TCP_RR -H $host_ip
./netperf -t TCP_CRR -H $host_ip
./netperf -t UDP_RR -H $host_ip

【命令介绍】
server端:netserver
client端:
测试TCP_STREAM(TCP并发):netperf -t TCP_STREAM -H $netserver_ip -p $PORT -l $testtime – -m $datagram_size
测试TCP_RR(同一个IP并发):netperf -t TCP_RR -H $netserver_ip -l $testtime -p $PORT – -r r e q s i z e , req_size, reqsize,rsp_size
测试UDP_STREAM:netperf -t UDP_STREAM -H $netserver_ip -l $testtime – -m $datagram_size
参数介绍:
-t:设置netperf工作模式,包括TCP_STREAM、UDP_STREAM、TCP_CRR、TCP_RR、UDP_RR
-H:netserver的IP地址
-p:指定netserver的端口号
-l:设置测试时间
-m:批量传输时设置传输数据包大小
-r:请求应答模式测试时发送数据包大小和接收数据包大小
-O:自定义输出结果,可在其中添加时延、90值、99值、吞吐量、CPU使用率等信息

七、spec2000
SPEC 2000由两套基准程序组成,分别测试CPU的整型运算性能和浮点运算性能

八、spec2006
SPEC CPU2006是SPEC组织推出的CPU子系统评估软件,重点测试系统的处理器、内存子系统和编译器。

SPEC CPU2006包括了CINT2006和CFP2006两个子项目,前者用于测量和对比整数性能、包含12个不同的基准测试,而后者则用于测量和对比浮点性能、包含17个不同的基准测试。
SPEC CPU2006测试中,测试系统的处理器、内存子系统和使用到的编译器(SPEC CPU2006提供的是源代码,并且允许测试用户进行一定的编译优化)都会影响最终的测试性能,而I/O(磁盘)、网络、操作系统和图形子系统对于SPEC CPU2006的影响非常的小

Spec2006测试模式分为rate测试和speed测试两项,其中rate测试主要衡量系统的多并发运算处理性能即平常我们所说的多线,speed测试主要衡量系统的单任务处理性能即平常我们所说的单线。

【测试步骤】
前置条件:保证机器物理内存大于或等于CPU核数的2倍(如CPU核数为4,内存要大于等于8G)
1、安装依赖包
apt-get install gcc g++ gfortran libbz2-dev
2、解压spec2006测试工具包,并附执行权限:
tar xvf speccpu2006-v1.0.1-newest.tar -C /home > /dev/null
chmod -R a+x /home/speccpu2006-v1.0.1
3、编辑tools/src/buildtools文件(311行和312行)
注释改行:export LD_LIBRARY_PATH DYLD_LIBRARY_PATH
在./configure行前加一行
export PERLFLAGS=“-A libs=-lm -A libs=-ldl”
4、修改$SPECCCPU/tools/src/make-3.8.0/glob/glob.c文件,
在209行“#if !defined __alloca && !defined GNU_LIBRARY”和230行“#endif”前添加“//”注释掉。
5、安装spec2006
./install.sh
在弹出的提示信息中选择yes,然后回车
6、加载环境变量
. ./shrc (.空格./shrc)
7、检查spec cpu2006是否安装成功
runspec -V
8.选择相应配置文件进行测试:
arm平台:
runspec -c arm64.cfg -n 1 -r 1 all(单线程)
runspec -c arm64.cfg -n 1 -r N all(多线程)

x86_64平台:
runspec -c x86.cfg -n 1 -r 1 all(单线程)
runspec -c x86.cfg -n 1 -r N all(多线程)

mips平台:
runspec -c mips64.cfg -n 1 -r 1 all(单线程)
runspec -c mips64.cfg -n 1 -r N all(多线程)

-n 指定测试轮数(3轮测试的话测试完成后会自动算出Base Ratio的几何平均数(几何平均数与算数平均值不同,几何平均数是对各变量值的连乘积开项数次方根),3轮以下则不显示该分数,需要手动算分; 手动算几何平均数方法:可在EXCEL表格中执行函数 =GEOMEAN(G8:G24));
-r N,设置cpu核数,N和CPU核数一致,根据台式机或服务器的核数去指定多线程N的值;
all代表浮点和整型参数都测试。

调优方案:
SPEC CPU2006测试中,测试系统的处理器、内存子系统和使用到的编译器(SPEC CPU2006提供的是源代码,并且允许测试用户进行一定的编译优化)都会影响最终的测试性能,而I/O(磁盘)、网络、操作系统和图 形子系统对于SPEC CPU2006的影响非常的小。
根据上述描述,影响因素包含CPU、内存、编译器。通常的优化方案包含:
1 更换性能更强劲的CPU
2 插满内存条
3 更换内存类型,如DDR3换成DDR4
4 更新性能更佳的内核版本
5 编译器:升级gcc、g++、gfortran
6 编译器使用的库:升级libc、libm、libdl、ld、libcrypt库版本
7 编译器的编译选项:选用合适的编译参数可起到优化作用,比如-O3、-ffast-math、-funroll-loops、-fprefetch-loop-arrays等。
8.编译器选择:选择优化更好的编译器,如icc、icpc、ifort等

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
通过网上收集和对LINUX服务器性能的分析和体验,整理了几个比较实用,功能比较强大的性能测试工具供亲们下载,虽然网络上都对每个工具做了详细的功能介绍和文档说明,但分得很散,所以, 在此本人将各个比较实用的服务器性能测试工具集中起来,方便开发人员有针对性的测试和对比,在服务器性能方面起到很好的效果。 1、LTP--linux稳定性测试: LTP套件是由 Linux Test Project 所开发的一套系统测试套件。它基于系统资源的利用率统计开发了一个测试的组合,为系统提供足够的压力。通过压力测试来判断系统的稳定性和可靠性。 2、Linux性能测试工具Lmbench:Linux性能测试工具Lmbench是一套简易可移植的,符合ANSI/C标准为UNIX/POSIX而制定的微型测评工具。一般来说,它衡量两个关键特征:反应时间和带宽。Lmbench旨在使系统开发者深入了解关键操作的基础成本。其官方网站是:http://www.bitmover.com/lmbench/。 3、Linux下很全面的监控工具dstat:dstat是一个用来替换 vmstat,iostat netstat,nfsstat和ifstat这些命令的工具, 是一个全能系统信息统计工具. 与sysstat相比, dstat拥有一个彩色的界面, 在手动观察性能状况时, 数据比较显眼容易观察; 而且dstat支持即时刷新, 譬如输入dstat 3, 即每三秒收集一次, 但最新的数据都会每秒刷新显示. 和sysstat相同的是, dstat也可以收集指定的性能资源, 譬如 dstat -c 即显示CPU的使用情况. 下载安装文件dstat-0.6.7-1.el*.rf.noarch.rpm: http://dag.wieers.com/rpm/packages/dstat/ 3、网络流量监测图形分析工具 Cacti:Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具 4、Linux系统维护常用工具sysstat:sysstat这个工具,可以说是linux &Unix; 以及Freebsd最常用的工具。它的主要用途就是观察服务负载,比如CPU和内存的占用率、网络的使用率以及磁盘写入和读取速度等。 5、Apache ab 压力测试:ab的全称是ApacheBench,ab是Apache 附带的超文本传输协议(HTTP)的性能测试工具。 其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求;
### 回答1: Linux性能测试工具包括: 1. sysstat:系统性能监控工具,可以监控CPU、内存、磁盘、网络等性能指标。 2. top:实时监控系统进程和资源占用情况,可以查看CPU、内存、IO等指标。 3. iostat:监控磁盘IO性能,可以查看磁盘读写速度、IO等待时间等指标。 4. vmstat:监控系统虚拟内存使用情况,可以查看内存、CPU、IO等指标。 5. netstat:监控网络连接和流量,可以查看网络连接状态、流量等指标。 6. sar:系统性能分析工具,可以生成系统性能报告,包括CPU、内存、磁盘、网络等指标。 7. perf:Linux性能分析工具,可以分析CPU、内存、磁盘、网络等性能指标,支持多种分析方式。 8. strace:系统调用跟踪工具,可以跟踪进程的系统调用,用于分析进程性能问题。 9. tcpdump:网络抓包工具,可以抓取网络数据包,用于分析网络性能问题。 以上是常用的Linux性能测试工具,可以根据具体需求选择合适的工具。 ### 回答2: Linux性能测试工具主要用于对计算机系统进行性能测试,实时监测系统的各种指标,并给出分析结果。在Linux操作系统中,常用的性能测试工具包括Sysstat工具、Sar工具、Top工具和Iostat工具等。 Sysstat工具是一种常用的Linux性能测试工具,它可以监测CPU利用率、内存使用情况、磁盘读写情况、网络负载、IO负载等关键性能指标。同时,Sysstat工具可以生成日志文件、图表和报告,方便用户进行性能分析和调优。 Sar工具是System Activity Reporter的缩写,它用于监测系统的活动情况,包括CPU、内存、磁盘、网络和进程活动情况等。Sar工具可以输出实时数据和历史数据,并支持各种参数设置和分析方法。 Top工具常用于监测系统的进程情况和资源占用率,包括CPU、内存、IO、网络等方面。Top工具可以快速查看系统状况,方便用户进行系统优化和调试。 Iostat工具用于监测系统的IO负载情况,包括硬盘读写速度、IOPS、吞吐量等指标。Iostat工具可以分析IO瓶颈和优化方案,提高系统IO性能。 总之,在Linux操作系统中选择适当的性能测试工具,对于系统性能分析和优化具有重要的作用,可以帮助用户提高计算机系统的稳定性和工作效率。 ### 回答3: Linux性能测试工具是一类专门用于测试和评估Linux系统性能的软件工具。它们可以对Linux系统的CPU、内存、硬盘等各个方面进行测试,从而帮助用户了解系统的性能瓶颈和优化方向。以下是常用的Linux性能测试工具介绍: 1. UnixBench:UnixBench 是一个通用的Unix性能测试工具,可用于测试CPU,I/O,内存等部件的性能。它是一个开源软件,包括了大量的测试用例。 2. Sysbench:Sysbench 是一个多功能的系统基准测试工具,可以测试CPU,内存,磁盘I/O等性能。它支持多线程和多进程测试,并且可以自动检测性能瓶颈。 3. Iometer:Iometer 是一款专门用于测试磁盘I/O性能的工具,支持以多种模式测试磁盘读写性能,如随机读,随机写等。 4. Perf:Perf 是一个Linux性能分析工具,可以收集CPU使用率,磁盘I/O,内存使用率等系统数据,并生成分析报告,帮助用户分析和优化系统的性能。 5. Fio:Fio 是一款用于测试磁盘性能和I/O负载的工具,支持多种测试模式,如随机读写,顺序读写等。它支持多线程和异步I/O测试。 6. Netperf:Netperf 是一款网络性能测试工具,可以用于测试TCP,UDP等网络协议的性能。它支持多线程测试,可以模拟多用户并发访问。 以上是几种常见的Linux性能测试工具,用户可以根据实际需要选择合适的工具进行系统性能测试和优化。在选择工具时,应该考虑到测试的覆盖范围、测试用例的准确性、测试结果的可靠性等方面,以充分评估系统的性能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值