fio 测试磁盘性能
在磁盘测试中最关心的几个指标分别为:
iops(每秒执行的IO次数)、bw(带宽,每秒的吞吐量)、lat(每次IO操作的延迟)。
当每次IO操作的block较小时,如512bytes/4k/8k等,测试的主要是iops。
当每次IO操作的block较大时,如256k/512k/1M等,测试的主要是bw。
1. FIO 简介
FIO 是一款 用于对磁盘进行性能测试的工具。可以测试IOPS,吞吐量,IO延迟等主要性能指标。而且支持多种IO引擎。
2. FIO 下载
下载地址:http://brick.kernel.dk/snaps/
打开以上网址,选择自己需要的版本并下载。比如:
wget http://brick.kernel.dk/snaps/fio-3.5.tar.gz
--2018-03-26 14:19:37-- http://brick.kernel.dk/snaps/fio-3.5.tar.gz
正在解析主机 brick.kernel.dk... 216.160.245.99
正在连接 brick.kernel.dk|216.160.245.99|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Found
位置:http://113.215.21.45:80/1Q2W3E4R5T6Y7U8I9O0P1Z2X3C4V5B/brick.kernel.dk/snaps/fio-3.5.tar.gz [跟随至新的 URL]
--2018-03-26 14:19:39-- http://113.215.21.45/1Q2W3E4R5T6Y7U8I9O0P1Z2X3C4V5B/brick.kernel.dk/snaps/fio-3.5.tar.gz
正在连接 113.215.21.45:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:729544 (712K) [application/x-gzip]
正在保存至: “fio-3.5.tar.gz”
72% [======================================================================> ] 532,565 154K/s eta(英国中部时
83% [=================================================================================> ] 610,757 159K/s eta(英国中部时
84% [=================================================================================> ] 616,549 149K/s eta(英国中部时
96% [=============================================================================================> ] 706,325 162K/s eta(英国中部时
100%[=================================================================================================>] 729,544 164K/s in 4.3s
2018-03-26 14:19:44 (164 KB/s) - 已保存 “fio-3.5.tar.gz” [729544/729544])
或者下载后再上传至服务器。
3. 解压并安装
# tar -xzvf ./fio-3.5.tar.gz
.... 省略输出
# cd fio-3.5
# make && make install
.... 省略输出
# which fio
/usr/local/bin/fio
4. 使用说明
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 每个进程生成文件的数量
5. 测试示例
混合测试:
fio -filename=/tmp/test -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=512b -size=200m -numjobs=10 -runtime=60 -group_reporting -name=mytest
顺序读: fio -filename=/dev/test -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest 随机写: fio -filename=/dev/test -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest 顺序写: fio -filename=/dev/test -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest
===================
天行健,君子以自强不息
地势坤,君子以厚德载物
===================