实战:Linux上硬盘io读写测试

一个电脑小知识,为大家介绍的相关话题,一定能解决您的问题的,一起来了解吧!

概念

fio,又称为Flexible IO Tester,是Jens Axboe编写的应用程序。

Jens是Linux Kernel中block IO subsystem的维护者。

FIO作为网络文件系统和磁盘的压测工具,多用于机型验证和文件系统的性能对比,本工具可以自动的分发fio命令到集群的机器列表,搜集小文件的iops和大文件的吞吐。

实战:Linux上硬盘io读写测试 第1张

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
收藏(0)