文档详情

FIO性能指标测试使用文档

葱**
实名认证
店铺
DOC
113KB
约5页
文档ID:185264893
FIO性能指标测试使用文档_第1页
1/5

FIO性能指标测试使用文档性能指标测试使用的工具是iometer,但如果需要简单快速地衡量某个块设备性能时,由于iometer需要装在win虚拟机内,部署起来相对繁琐,此时该工具就不太试用了fio最初是用来节省为特定负载写专门测试程序,或是进行性能测试,或是找到和重现bug的时间而写测试应用是非常浪费时间因此需要一个工具来模拟给定的io负载,而不用重复的写一个又一个的特定的测试程序一、fio参数介绍fio总共有100+个参数,很多参数我们用不到,下面选择版本性能测试中一些常用的参数进行说明首先来看wiki上的一条fio命令:fio -name=fiotest.qcow2 -filename=test.qcow2 -group_reporting -iodepth=16 -ioengine=gfapi_async -volume=vs_vol_rep2 -brick=127.0.0.1 -nrfiles=1 -rw=randwrite -bs=4k -size=1G -threads -numjobs=1 -direct=1该命令式在挂载点下随机写一个1G的文件,测试挂载点的性能,具体参数的意义如下:-name: 用于输出信息用的名字,在上述命令行的使用方法中,表明一个新job的开始,缺省为job name-filename: 测试文件名称,通常选择需要测试的盘的data目录-group_reporting:汇总所有的信息,而不是每个job都显示具体的结果-iodepth:本次测试的队列深度-ioengine:负载产生的引擎,定义job向文件发起io的方式。

Fio的引擎有很多,具体可以网上搜一下,常用的引擎为libaio 和 gfapi_async,测试过程中,如果要模拟api的方式测试vs挂载点的性能则用gfapi_async,测试裸盘或其他块设备性能时,选用libaio即可volume 和 -brick:这两个是vs中测试挂载点用的,其他场景不需要nrfiles:每个进程生成的文件数量-rw: 读写方式,顺序读,顺序写,随机读,随机写,混合读写-bs: 块大小,一般测试4k, 8k, 64k, 128k, 1M-size: 测试文件的大小-threads:fio默认会使用fork()创建job,如果这个选项设置的话,fio将使用pthread_create来创建线程-numjobs:创建的线程数量-direct: 测试过程绕过机器自带的buffer,相当于o_direct其他一些相对高级点用法的参数,比如:-runtime:测试时长-bssplit=4k/40:64k/30:1M/30: 混合块大小,4k:64k:1M = 4:3:3bsrange=512-2048:块大小的范围,同bs参数-rw=randrw, -rwmixread=70:混合读写7:3二、fio数据解析下面以一个具体的例子说明fio的实际使用方法,以及输出结果中各项指标的含义。

后台测试hdd裸盘的性能,输入命令:fio -name=test -group_reporting -ioengine=libaio -nrfiles=1 -threads -numjobs=1 -direct=1 -iodepth=16 -rw=randread -bs=4K -filename=/dev/sdd -runtime=100上图是裸盘测试的结果,结果中数据较多,在测试过程中,不需要关注这么多参数,对于小块io(以64k为界)只需要关注iops,平均时延(lat中的avg),大块io关注吞吐和平均时延(lat中的avg)即可,上面的测试结果中,由于测试块大小为4k,属于小块,所以只需要看iops和时延,结果为iops=160,平均时延为:99.76ms如果有其他需要可以去关注其他指标,各项指标的含义如下:首先是整个测试用户设定的参数情况,本次测试名为test,测试4k, 16深度随机读,使用的引擎是libaio截图后部分是fio各个job进程的一些基本信,这些信息,不用关注其次是本次测试结果,本次测试总共读了32M数据,吞吐为0.66MBps,iops为160,运行时长为100ms,由于测试的是小块io,所以此处只需要看iops就可以,看吞吐没有意义。

接下来是本次测试的延时时间,slat表示磁盘需要多久将io提交到kernel做处理;clat表示命令提交到了内核,提交到内核到io完成的时间Lat是一个新的指标,表示从io结果提创建到clat完成,一般说时延,就是看这个值下面是clat各个延时所占的百分比下图中,bw的意义很明确,就是指带宽,stdev这个指标,我也没搞懂是什么意思,后续查到再优化上面说了,lat指的是时延,图中,取图中一组数据说明:50=20.24%,表示有20.24%的io时延小于50mscpu栏中,usr表示用户cpu占用率,sys表示系统cpu占用率,ctx为上下文切换次数,后面两个是主要和次要页面错误数量Io depths用于控制廷议时刻发送给os的io数量Submit和complete不碍事同一时段fio发送和完成的io数据量Issued为发送的io数量,latency用于调节吞吐量直到达到预设的延迟目标最后是结果的汇总,表示完成的io数据量,平均带宽,最大最小带宽,最大/小时延3、 fio其他用法测试时,可能需要同时测试多块盘的性能,上面介绍的是fio命令行用法就满足不了这个需求其实,fio真正官方的用法是使用配置文件,在文件中写入相应的参数,fio读取配置文件,执行相应的测试(fio config.txt),通过这种方法可以同时测试几块磁盘的性能(文件中各项参数的与上面的命令行使用方法中一致)。

文件的格式如下:文件中其他参数就不再赘述了,若想同时测试几块数据盘,直接添加[job]就可以了,比如上图中表示同时测试/dev/sdb 和 /dev/sdc两块磁盘的随机写性能4、 注意事项FIO测试性能时,有几点需要注意:1. 测试裸盘性能时,拿到新盘,首先用大块io将磁盘顺序写一遍,然后再开始测试2. 测试挂载点性能时,先在相应的位置truncate一个特定大小的文件后,用fio先将文件填满,不要拿一个空洞文件来测试3. 环境搭好后,测试不要测试磁盘的写性能,否则测试完成后,该磁盘无法继续在环境中使用。

下载提示
相似文档
正为您匹配相似的精品文档