fio是一种I/O工具,用于基准测试和压力/硬件验证。它支持19种不同类型的I/O引擎(同步,mmap、libaio posixaio, SG v3,拼接,null,网络,syslet, guasi, solarisaio等)、I/O优先级(适用于较新的Linux内核),评估I/O,分叉或线程作业等等。它可以在块设备和文件上工作.fio以简单易懂的文本格式接受职位描述。包含几个示例作业文件.fio显示各种I/O性能信息,包括完整的IO延迟和百分位数.fio在许多地方广泛使用,用于基准测试,QA和验证目的。它支持Linux, FreeBSD, NetBSD, OpenBSD, OS X OpenSolaris, AIX, hp - ux, Android和Windows。
fio官网地址:http://freshmeat.net/projects/fio/
安装:,,
,,,,,,,yum安装fio - y
用法
,,,,,fio分顺序读,-=阅读,随机读- r=randread顺序写- r=写,随机写- r=randwrite混合随机读写模式,-=randrw
参数:
,,,,,,文件名:指定文件(设备)的名称。可以通过冒号分割同时指定多个文件,如文件名=/dev/sda:/dev/sdb。
,,,,,,目录:设置文件名的路径前缀。在后面的基准测试中,采用这种方式来指定设备。
,,,,,,名称:指定工作的名字,在命令行中表示新启动一个工作。
,,,,,,直接:bool类型,如果设置成真正的(1),表示不使用输入输出缓冲区。
,,,,,,,ioengine: I/O引擎,现在fio支持19种ioengine。默认值是同步同步阻塞I/O, libaio是Linux的原生异步I/O .
,,,,,,iodepth:如果ioengine采用异步方式,该参数表示一批提交保持的io单元数。该参数可参考文章“Fio压测工具和io队列深度理解和误区”。
,,,,,,rw: I/O模式,随机读写,顺序读写等等。
,,,,,,bs: I/O块大小,默认是4 k。
,,,,,,尺寸:指定工作处理的文件的大小。
,,,,,,numjobs:指定工作的克隆数(线程)。
,,,,,,time_based:如果在运行时指定的时间还没到时文件就被读写完成,将继续重复知道运行时间结束。
,,,,,,运行时:指定在多少秒后停止进程。如果未指定该参数,fio将执行至指定的文件读写完全完成。
,,,,,,group_reporting:当同时指定了numjobs了时,输出结果按组显示。
下面是带数字的解释:
,,,直接=1,,,,,,,,,,,,,#测试过程绕过机器自带的缓冲区。使测试结果更真实 rw=randwrite ,,,,,,,,,, #测试随机写的I/O rw=randrw ,,,,,,,,,,,,, #测试随机写和读的I/O ,,b=16 k ,,,,,,,,,,,,,, #单次io的块文件大小为16 k ,,bsrange=512 - 2048,,,,, #同上,提定数据块的大小范围 ,,大?5 g ,,,,,,,,,,,,, #本次的测试文件大小为5克,以每次4 k的io进行测试 ,,numjobs=30,,,,,,,,,,, #本次的测试线程为30个 ,,运行时=1000,,,,,,,,,#测试时间1000秒,如果不写则一直将5克文件分4 k每次写完为止 ,,ioengine=psync ,,,,,, # io引擎使用psync方式 ,,rwmixwrite=30,,,,,,,, #在混合读写的模式下,写占30% ,,group_reporting ,,,,, #关于显示结果的,汇总每个进程的信息 ,,lockmem=1 g ,,,,,,,,,, #只使用1 g内存进行测试 ,,zero_buffers ,,,,,,,,用0号初始化系统缓冲区 ,,nrfiles=8,,,,,,,,,,,, #每个进程生成文件的数量
例如:要测试根目录
,,,,,,,,,,,,,,mkdir/测试/
,,,,,,,,fio目录=/测试/?/p>
我建了一个/数据
fio 目录=/数据/,- name=tempfile.dat 直接=1,- r=randwrite b=4 k =1 m -numjobs=16, -time_based 运行时=100,-group_reporting
看看生成的一堆文件
#复制下面的配置内容,将目录=/道路//测试修改为你测试硬盘挂载目录的地址,并另存为fio。参看
fio命令入门到跑路(千万不能在系统所在的分区测试硬盘性能)