fio,又称为Flexible IO Tester,是Jens Axboe编写的应用程序。
Jens是Linux Kernel中block IO subsystem的维护者。
FIO是一种用于测试网络文件系统和磁盘性能的工具,常用于验证机型和比较文件系统性能。它能自动将fio命令发送到集群机器列表,并收集小文件的IOPS和大文件的吞吐量数据。
rw=[mode] rwmixwrite=30 在混合读写的模式下,写占30% mode read 顺序读 write 顺序写 readwrite 顺序混合读写 randwrite 随机写 randread 随机读 randrw 随机混合读写
yumdownloader --destdir=/tmp --resolve fio rpm -ivh /tmp/*.rpm rpm -ivh fio-3.7-2.el7.x86_64.rpm
说明: filename=/dev/sdb1 测试文件名称,通常选择需要测试的盘的data目录。 direct=1 测试过程绕过机器自带的buffer。使测试结果更真实。 rw=randwrite 测试随机写的I/O rw=randrw 测试随机写和读的I/O bs=16k 单次io的块文件大小为16k bsrange=512-2048 同上,提定数据块的大小范围 size=5g 本次的测试文件大小为5g,以每次4k的io进行测试。 numjobs=30 本次的测试线程为30. runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。 ioengine=psync io引擎使用pync方式 rwmixwrite=30 在混合读写的模式下,写占30% group_reporting 关于显示结果的,汇总每个进程的信息。 此外 lockmem=1g 只使用1g内存进行测试。 zero_buffers 用0初始化系统buffer。 nrfiles=8 每个进程生成文件的数量。
测试随机写带宽
fio --name=wbw --filename=/data/sui_ji_xie --numjobs=4 --bs=128k --size=4G --ioengine=libaio --direct=1 --randrepeat=0 --norandommap --rw=randwrite --group_reporting --iodepth=512 --iodepth_batch=128 --iodepth_batch_complete=128 --gtod_reduce=1 --runtime=30
测试4K 随机写延迟:
fio --name=wlat --filename=/data/4k_sui_ji_xie --numjobs=1 --runtime=30 --bs=4k --size=4G --ioengine=libaio --direct=1 --norandommap --randrepeat=0 -rw=randwrite --group_reporting --iodepth=1 --iodepth_batch_complete=0
测试4k 随机写IOPS:
fio --name=wiops --filename=/data/4k_sui_ji_xie_iops --numjobs=4 --bs=4k --size=4G --ioengine=libaio --direct=1 --randrepeat=0 --norandommap --rw=randwrite --group_reporting --iodepth=512 --iodepth_batch=128 --iodepth_batch_complete=128 --gtod_reduce=1 --runtime=30
测试4k 读带宽:
fio --name=rbw --filename=/data/4k_sui_ji_du --numjobs=4 --bs=128k --size=4G --ioengine=libaio --direct=1 --randrepeat=0 --norandommap --rw=randread --group_reporting --iodepth=512 --iodepth_batch=128 --iodepth_batch_complete=128 --gtod_reduce=1 --runtime=30
测试4k 随机读延迟:
fio --name=rlat --filename=/data/4k_sui_ji_du_yanchi --numjobs=1 --runtime=30 --bs=4k --size=4G --ioengine=libaio --direct=1 --randrepeat=0 --rw=randread --group_reporting --iodepth=1 --iodepth_batch_complete=0
测试4k 随机读IOPS:
fio --name=riops --filename=/data/4k_sui_ji_du_iops --numjobs=4 --bs=4k --size=4G --ioengine=libaio --direct=1 --randrepeat=0 --norandommap --rw=randread --group_reporting --iodepth=512 --iodepth_batch=128 --iodepth_batch_complete=128 --gtod_reduce=1 --runtime=30
随机读:
fio -filename=/data/sui_ji_du -iodepth=1 -ioengine=libaio -direct=1 -rw=randread -bs=4k -size=1G -numjobs=10 -runtime=20 -group_reporting -name=test-rand-read
随机写:
fio -filename=/data/sui_ji_xie -iodepth=64 -ioengine=libaio -direct=1 -rw=randwrite -bs=4k -size=2G -numjobs=64 -runtime=20 -group_reporting -name=test-rand-write
顺序读:
fio -filename=/data/shun_xu_du -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=20G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
混合随机读写:
fio -filename=/data/hun_he_du_xie -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=10G -numjobs=30 -runtime=100 -group_reporting -name=mytest -ioscheduler=noop
io=执行了多少M的IO bw=平均IO带宽 iops=IOPS runt=线程运行时间 slat=提交延迟 clat=完成延迟 lat=响应时间 bw=带宽 cpu=利用率 IO depths=io队列 IO submit=单个IO提交要提交的IO数 IO complete=Like the above submit number, but for completions instead. IO issued=The number of read/write requests issued, and how many of them were short. IO latencies=IO完延迟的分布 io=总共执行了多少size的IO aggrb=group总带宽 minb=最小.平均带宽. maxb=最大平均带宽. mint=group中线程的最短运行时间. maxt=group中线程的最长运行时间. ios=所有group总共执行的IO数. merge=总共发生的IO合并数. ticks=Number of ticks we kept the disk busy. in_queue=花费在队列上的总共时间. util=磁盘利用率
以上是实战:Linux上硬盘io读写测试的详细内容。更多信息请关注PHP中文网其他相关文章!