【系统运维】磁盘IO性能测试工具fio使用教程

tanglu 3168 2022-03-17

一、磁盘性能标准

磁盘性能的衡量标准通常有使用率、饱和度、IOPS、吞吐量以及响应时间这五个指标
· 使用率:磁盘处理 I/O 的时间百分比。过高的使用率(比如超过 80%),通常意味着磁盘 I/O 存在性能瓶颈。
· 饱和度:是指磁盘处理 I/O 的繁忙程度。过高的饱和度,意味着磁盘存在严重的性能瓶
颈。当饱和度为 100% 时,磁盘无法接受新的 I/O 请求。
· IOPS(Input/Output Per Second)磁盘每秒读写次数。IOPS是一些小文件存储、OLTP数据库应用上的关键衡量指标,因为这些应用更关注随机读写性能。比如IOPS为300,代表磁盘每秒可以有300次IO,每次IO花费时间就是1/300=0.0033

· 吞吐量磁盘每秒读写流量,单位为MB/s。吞吐量是一些需要传输大量连续数据的应用(如视频播放)的关键衡量指标,因为这些应用更关注连续读写性能

· 响应时间:I/O 请求从发出到收到响应的间隔时间。


二、FIO工具介绍
FIO是一个功能强大的磁盘性能测试工具,支持对磁盘进行顺序读写、随机读写等多种模式测试,还可以选择测试线程数、是否裸设备、是否跳过缓存等额外功能。
FIO工具常用选项如下:

--name: 指定测试任务job名

--filename: 指定需要测试的磁盘或者文件名,可以通过冒号指定多个文件,filename=/dev/sda:/data/fio/test_file,如指定的是磁盘,只用写磁盘名就可以,不用写分区号

--rw:读写模式,包括read(顺序读)、write(顺序写)、randread(随机读)、randwrite(随机写)、randrw(混合随机读写)、readwrite(混合顺序读写)

--direct:指定direct模式。默认为True(也可写为1)表示指定O_DIRECT标识符,忽略Buffer缓存,数据直写

--bs: 指定每个I/O块的大小,默认是4K

--size:指定测试文件总大小

--numjobs: 指定测试线程数

--runtime: 指定fio任务执行时间,如果未指定该参数,FIO读写完指定的文件就自动结束

--ioengine: 指定I/O引擎,fio支持很多引擎,默认是sync同步阻塞I/O,建议配置为libaio,即Linux系统的异步I/O

--rwmixread:混合读写比例,如-rwmixread=70代表读比例为70%

--group_reporting: 当指定了numjobs时,输出结果按组显示

--iodepth: 测试队列深度,一般可不配

--time_based:如果在runtime指定的时间还没到时文件读写已经完成,将继续重复直到runtime时间结束


三、FIO测试示例

在使用FIO进行测试时注意事项:
· 一定确保测试磁盘是空闲并没有数据的,禁止在系统分区或存有业务数据的磁盘进行测试,以免损坏系统文件
· 建议直接测试裸数据盘,如/dev/vdb

· 测试文件系统性能时,推荐指定具体文件测试,如/data/test_file

# 4K 随机读
fio --name=randread --filename=/dev/sdb --direct=1 --ioengine=libaio --bs=4K  --size=100G --numjobs=16 --rw=randread --runtime=120 --time_based--group_reporting 

# 16K 随机读写,其中70%为读
fio --name=randrw --filename=/dev/sdb --direct=1 --ioengine=libaio --bs=16K --size=100G --numjobs=16 --rw=randrw -rwmixread=70 --runtime=120 --time_based --group_reporting


四、FIO测试报告

fio.png

bw:表示磁盘吞吐量

IOPS:每秒I/O的次数
clat:提交请求和请求完成之间的时间。统计值分别是最小、最大、平均和标准方差
CPU:显示IO负载对CPU的影响

版权声明
本站所有文章均为原创,转载请注明出处!小站维护不易,如果对您有所帮助,希望能点击一下站内广告,谢谢!
上一篇:【系统运维】使用df命令查看磁盘用量情况
下一篇:【系统运维】使用iostat命令监控磁盘IO状态
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

微信二维码