Linux性能测试工具整理

性能测试工具: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等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/758058.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在window命令行中,使用conda创建新的虚拟环境时出现的问题以及解决办法

一.出现的问题 C:\Users\zhu>conda create -n ML python3.8 Collecting package metadata (current_repodata.json): failedCondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/win-64/current_repodata.js…

南京大学AI考研,宣布改考408!

官网还没通知 附上南大与同层次学校近四年的分数线对比&#xff0c;整体很难 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 如果确定要冲南大的话建议提早调整自己的复习路线&…

Springboot中使用@Async注解7大失效场景及解决方案

Springboot中使用Async注解7大失效场景及解决方案 前言正文场景一&#xff1a;调用者与被调用者在同一个类中解决方案 场景二&#xff1a;配置类未启用异步支持解决方案 场景三&#xff1a;方法不是 public 的解决方案 场景四&#xff1a;线程池未正确配置解决方案 场景五&…

Combining external-latent attention for medical image segmentation

结合外部潜在注意的医学图像分割 摘要 注意机制是提高医学图像分割性能的新切入点。如何合理分配权重是注意力机制的关键,目前流行的方法包括全局压缩和使用自注意操作的非局部信息交互。然而,这些方法过于关注外部特征,缺乏对潜在特征的开发。全局压缩方法通过全局均值或…

C01 C++ Modding

Modding Programs running on a user-controlled computer are amenable to “modding” . If a piece of information, such as an integer representing health or lives, exists in RAM, one may find and edit it to their liking. Taken to the extreme, entirely new …

threejs 模型聚焦定位

需求&#xff1a;鼠标选中模型&#xff0c;然后点击定位按钮&#xff0c;将相机平移到模型跟前&#xff0c;相机视线不变 var box new THREE.Box3();//包围盒box.expandByObject(model);//model是模型var center new THREE.Vector3();box.getCenter(center);//获取中心点var …

测试人员如何进行需求分析?

在进行测试用例设计之前&#xff0c;我们通常需要对需求文档进行分析&#xff0c;甚至在需求评审阶段从测试角度给出建议。通过需求分析&#xff0c;不仅可以输出测试点&#xff0c;也可以发现需求中存在的问题。 业务角度和技术角度 测试需求的分析可以从两个不同的角度进行…

介绍5款 世界范围内比较广的 5款 mysql Database Management Tool

介绍5款 世界范围内比较广的 5款 Mysql Database Management Tool 文章目录 介绍5款 世界范围内比较广的 5款 Mysql Database Management Tool前言MySQL Workbench&#xff1a;Navicat Premium&#xff1a;DBeaver Community&#xff1a;HeidiSQL&#xff1a;SQLyog&#xff1a…

如何解决node-sass下载用的还是过期的淘宝源?

下载node-sass发现报错过期的证书 把npm的淘宝源换成最新的https://registry.npmmirror.com后发现还是指向了以前的淘宝源&#xff0c;看到一位博主说&#xff0c;单改npm源不够还要改下载node-sass的源&#xff0c;再次搜索另外一位博主提供了命令npm config ls可以使用它来查…

文件包含漏洞之包含NGINX日志文件(常用)

条件&#xff1a;知道目标服务器的日志文件存贮路径&#xff0c;并且存在文件包含漏洞 首先对目标服务器发送一次含有木马的请求&#xff0c;目的是让目标服务器日志中生成含有木马的日志记录。因为发送过程中&#xff0c;使用了url编码&#xff0c;我们抓包进行更改成能够执行…

图文详解io_uring高性能异步IO架构

说到高性能网络编程&#xff0c;我们第一时间想到的是epoll机制&#xff0c;epoll很长一段时间统治着整个网络编程江湖&#xff0c;然而io_uring的出现&#xff0c;似乎在撼动epoll的统治地位&#xff0c;今天我们来揭开io_uring的神秘面纱。 1.io_uring简介 io_uring是一个L…

竞赛 - 基于机器视觉的图像拼接算法

前言 图像拼接在实际的应用场景很广&#xff0c;比如无人机航拍&#xff0c;遥感图像等等&#xff0c;图像拼接是进一步做图像理解基础步骤&#xff0c;拼接效果的好坏直接影响接下来的工作&#xff0c;所以一个好的图像拼接算法非常重要。 再举一个身边的例子吧&#xff0c;…

Mac 使用 pip install mysqlclient 爆错 error: subprocess-exited-with-error 解决办法

在虚拟环境中安装 mysqlclient 发生报错&#xff1a; pipenv install mysqlclient报错如下&#xff1a; ERROR:pip.subprocessor:Getting requirements to build wheel exited with 1 [ResolutionFailure]: File "/Users/zhangyongxin/.local/share/virtualenvs/movie…

express+mysql+vue,从零搭建一个商城管理系统16--收货地址(全国省市县名称和code列表)

提示&#xff1a;学习express&#xff0c;搭建管理系统 文章目录 前言一、新建config/area.js二、新建models/address.js三、新建dao/address.js四、新建routes/address.js五、添加地址六、查询用户地址列表总结 前言 需求&#xff1a;主要学习express&#xff0c;所以先写serv…

Spring Data访问Elasticsearch----脚本和运行时字段Scripted and runtime fields

Spring Data访问Elasticsearch----脚本和运行时字段Scripted and runtime fields 一、person 实体二、存储库接口三、service类四、脚本化字段Scripted fields五、运行时字段Runtime fields Spring Data Elasticsearch支持脚本(scripted)字段和运行时(runtime)字段。有关此方面…

浅谈大模型“幻觉”问题

大模型的幻觉大概来源于算法对于数据处理的混乱&#xff0c;它不像人类一样可以by the book&#xff0c;它没有一个权威的对照数据源。 什么是大模型幻觉 大模型的幻觉&#xff08;Hallucination&#xff09;是指当人工智能模型生成的内容与提供的源内容不符或没有意义的现象。…

SpringCloud Gateway工作流程

Spring Cloud Gateway的工作流程 具体的流程&#xff1a; 用户发送请求到网关 请求断言&#xff0c;用户请求到达网关后&#xff0c;由Gateway Handler Mapping&#xff08;网关处理器映射&#xff09;进行Predicates&#xff08;断言&#xff09;&#xff0c;看一下哪一个符合…

windows docker

写在前面的废话 最近在学习riscv的软件相关内容&#xff0c;倒是有别人的sg2042机器可以通过ssh使用&#xff0c;但是用起来太不方便了&#xff0c;经常断掉&#xff0c;所以想着在自己的机器上跑一跑riscv的操作系统。最常见的有两种方法吧&#xff0c;第一个就是qemu&#xf…

数据库运行状况和性能监控工具

数据库监控是跟踪组织中数据库的可用性、安全性和性能的过程&#xff0c;它涉及通过跟踪各种关键指标来分析数据库的性能&#xff0c;确保数据库的正常运行并具有深入的可见性&#xff0c;并在出现潜在问题时触发即时警报&#xff0c;以采取主动措施来确保数据库的高可用性。 …

制定工业物联网战略? 成功的5个关键考虑因素

随着越来越多的公司争夺注意力和收入&#xff0c;成功和创造、建设和创新的压力也在增加&#xff0c;这导致了对工业物联网战略的更大需求。 随着越来越多的公司争夺注意力和收入&#xff0c;成功和创造、建设和创新的压力也在增加&#xff0c;这导致了对工业物联网战略的更大需…