Fio(FlexibleI/OTester)是由JensAxboe开发的一款用于测试和压力/硬件验证的免费开源软件。它支持19种不同类型的I/O引擎(sync、mmap、libaio、posixaio、SGv3、splice、null、network、syslet、guasi、solarisaio等)、I/O优先级(针对较新的Linux内核)、I/O速度,分叉任务或线程任务等。它能够在块设备和文件上工作。Fio接受非常简单易懂的文本格式的任务描述。该软件默认包含多个示例任务文件。Fio显示所有类型的I/O性能信息,包括完整的IO延迟和百分比。它被广泛用于许多地方,包括评估、QA和验证目的。它支持Linux、FreeBSD、NetBSD、OpenBSD、OSX、OpenSolaris、AIX、HP-UX、Android和Windows。在本教程中,我们将使用Ubuntu16,您需要在此计算机上具有sudo或root权限。我们将介绍Fio的安装和使用。要从源代码安装Fio,我们将克隆GitHub上的存储库。安装所需的依赖项,然后我们将从源代码构建应用程序。首先,确保我们安装了Git。sudoapt-getinstallgitCentOS用户可以执行以下命令:sudoyuminstallgit现在,我们切换到/opt目录并从Github克隆存储库:cd/optgitclonehttps://github.com/axboe/fio你应该您将看到以下输出:Cloninginto'fio'...remote:Countingobjects:24819,done.remote:Compressingobjects:100%(44/44),done.remote:Total24819(delta39),reused62(delta32),pack-reused24743Receivingobjects:100%(24819/24819),16.07MiB|0字节/秒,完成。解析增量:100%(16251/16251),完成。检查连接...完成。现在,我们通过在/opt目录中输入以下命令切换到Fio的代码目录:cdfio***,我们可以使用以下命令使用make从源代码构建软件:#./configure#make#makeinstallin在Ubuntu上安装Fio对于Ubuntu和Debian,Fio已经在主存储库中。您可以使用yum和apt-get等标准包管理器轻松安装Fio。对于Ubuntu和Debian,您只需执行以下命令:sudoapt-getinstallfio对于CentOS/Redhat,您只需执行以下命令。在CentOS上,您可能需要先在系统上安装EPEL存储库,然后才能安装Fio。您可以通过执行以下命令来安装它:sudoyuminstallepel-release-y您可以通过执行以下命令来安装Fio:sudoyuminstallfio-y使用Fio进行磁盘性能测试Fio现在已安装在您的系统上。现在是时候看一些如何使用Fio的例子了。我们将进行随机写入、读取和读写测试。要执行随机写入测试,请执行以下命令开始。这个命令会同时执行两个进程,写入总共4GB(4个任务x512MB=2GB)的文件:sudofio--name=randwrite--ioengine=libaio--iodepth=1--rw=randwrite--bs=4k--direct=0--size=512M--numjobs=2--runtime=240--group_reporting...fio-2.2.10Starting2processsrandwrite:(groupid=0,jobs=2):err=0:pid=7271:SatAug513:28:442017write:io=1024.0MB,bw=2485.5MB/s,iops=636271,runt=412msecslat(usec):min=1,max=268,avg=1.79,stdev=1.01clat(usec):min=0,max=13,avg=0.20,stdev=0.40lat(usec):min=1,max=268,avg=2.03,stdev=1.01clat百分位数(usec):|1.00th=[0],5.00th=[0],10.00th=[0],20.00th=[0],|30.00th=[0],40.00th=[0],50.00th=[0],60.00th=[0],|第70.00=[0]、第80.00=[1]、第90.00=[1]、第95.00=[1]、|99.00th=[1],99.50th=[1]],99.90th=[1],99.95th=[1],|99.99th=[1]lat(usec):2=99.99%,4=0.01%,10=0.01%,20=0.01%cpu:usr=15.14%,sys=84.00%,ctx=8,majf=0,minf=26IO深度:1=100.0%,2=0.0%,4=0.0%,8=0.0%,16=0.0%,32=0.0%,>;=64=0.0%提交:0=0.0%,4=100.0%,8=0.0%,16=0.0%,32=0.0%,64=0.0%,>=64=0.0%完成:0=0.0%,4=100.0%,8=0.0%,16=0.0%,32=0.0%,64=0.0%,>=64=0.0%发行:total=r=0/w=262144/d=0,short=r=0/w=0/d=0,drop=r=0/w=0/d=0延迟:target=0,window=0,percentile=100.00%,depth=1Runstatusgroup0(alljobs):WRITE:io=1024.0MB,aggrb=2485.5MB/s,m??inb=2485.5MB/s,m??axb=2485.5MB/s,m??int=412msec,maxt=412msec磁盘统计(读/写):sda:ios=0/0,merge=0/0,ticks=0/0,in_queue=0,util=0.00%Performrandomreadtest我们将要执行随机读取测试,我们将尝试读取一个随机的2GB文件sudofio--name=randread--ioengine=libaio--iodepth=16--rw=randread--bs=4k--direct=0--size=512M--numjobs=4--runtime=240--group_reporting你应该会看到下面这样的输出:...fio-2.2.10Starting4processersrandread:LayingoutIOfile(s)(1file(s)/512MB)randread:LayingoutIOfile(s)(1file(s)/512MB)randread:布局IO文件(1file(s)/512MB)randread:布局IO文件(1file(s)/512MB)Jobs:4(f=4):[r(4)][100.0%完成][71800KB/0KB/0KB/s][17.1K/0/0iops][eta00m:00s]randread:(groupid=0,jobs=4):err=0:pid=7586:2017年8月5日星期六13:30:52读取:io=2048.0MB,bw=80719KB/s,iops=20179,runt=25981msecslat(usec):min=72,max=10008,avg=195.79,stdev=94.72clat(usec):min=2,max=28811,avg=2971.96,stdev=760.33lat(usec):min=185,max=29080,avg=3167.96,stdev=798.91clat百分位数(usec):|1.00th=[2192],5.00th=[2448],10.00th=[2576],20.00th=[2736],|30.00th=[2800],40.00th=[2832],50.00th=[2928],60.00th=[3024],|70.00=[3120],80.00th=[3184],90.00th=[3248],95.00th=[3312],|99.00th=[3536],99.50th=[6304],99.90th=[15168],99.95th=[18816],|99.99th=[22912]bw(KB/s):min=17360,max=25144,per=25.05%,avg=20216.90,stdev=1605.65lat(usec):4=0.01%,10=0.01%,250=0.01%,500=0.01%,750=0.01%lat(usec):1000=0.01%lat(msec):2=0.01%,4=99.27%,10=0.44%,20=0.24%,50=0.04%cpu:usr=1.35%,sys=5.18%,ctx=524309,majf=0,minf=98IO深度:1=0.1%,2=0.1%,4=0.1%,8=0.1%,16=100.0%,32=0.0%,>=64=0.0%提交:0=0.0%,4=100.0%,8=0.0%,16=0.0%,32=0.0%,64=0.0%,>=64=0.0%完成:0=0.0%、4=100.0%、8=0.0%、16=0.1%、32=0.0%、64=0.0%、>=64=0.0%发行:总计=r=524288/w=0/d=0,short=r=0/w=0/d=0,drop=r=0/w=0/d=0延迟:target=0,window=0,percentile=100.00%,depth=16运行状态组0(所有作业):READ:io=2048.0MB,aggrb=80718KB/s,minb=80718KB/s,maxb=80718KB/s,mint=25981msec,maxt=25981msecDiskstats(读/写):sda:ios=521587/871,米erge=0/1142,ticks=96664/612,in_queue=97284,util=99.85%***,我们想展示一个简单的随机读写测试,看看Fio返回的输出类型读写性能测试以下命令将测试U盘(/dev/sdc1)的随机读写性能:sudofio--randrepeat=1--ioengine=libaio--direct=1--gtod_reduce=1--name=test--filename=random_read_write.fio--bs=4k--iodepth=64--size=4G--readwrite=randrw--rwmixread=75下面是我们从上面的命令得到的输出:fio-2.2.10Starting1processJobs:1(f=1):[m(1)][100.0%done][217.8MB/74452KB/0KB/s][55.8K/18.7K/0iops][eta00m:00s]test:(groupid=0,jobs=1):err=0:pid=8475:SatAug513:36:042017read:io=3071.7MB,bw=219374KB/s,iops=54843,runt=14338msec写入:io=1024.4MB,bw=73156KB/s,iops=18289,runt=14338mseccpu:usr=6.78%,sys=20.81%,ctx=1007218,majf=0,minf=9IO深度:1=0.1%,2=0.1%,4=0.1%,8=0.1%,16=0.1%,32=0.1%,>=64=100.0%提交:0=0.0%,4=100.0%,8=0.0%,16=0.0%,32=0.0%,64=0.0%,>=64=0.0%完成:0=0.0%,4=100.0%,8=0.0%,16=0.0%,32=0.0%,64=0.1%,>=64=0.0%发布:总数=r=786347/w=262229/d=0,short=r=0/w=0/d=0,drop=r=0/w=0/d=0延迟:target=0,window=0,percentile=100.00%,depth=64Runstatusgroup0(alljobs):READ:io=3071.7MB,aggrb=219374KB/s,m??inb=219374KB/s,m??axb=219374KB/s,m??int=14338msec,maxt=14338msecWRITE:io=1024.4MB,aggrb=73156KB/s,minb=73156KB/s,maxb=73156KB/s,mint=14338msec,maxt=14338msec磁盘统计(读/写):sda:ios=774141/258944,merge=1463/899,ticks=748800/150316,in_queue=900720,util=99.35%我们希望您喜欢本教程并喜欢接下来的内容,Fio是一个非常有用的工具,我们希望您在下一次调试活动中使用它如果您喜欢这篇文章,请留下评论和问题。
