一、FIO工具安装:
rpm –qa|grep fio
2、源码安装(2、3、4任选一个,推荐方法:3、rpm 的二进制安装)
wget https://github.com/axboe/fio/archive/refs/tags/fio-3.14.tar.gz
tar -zxvf fio-3.14.tar.gz
./configure
make
make install
- 官网地址:https://pkgs.org/download/fio
- 获取fio的rpm安装包:http://mirror.centos.org/centos/7/os/x86_64/Packages/fio-3.7-2.el7.x86_64.rpm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/fio-3.7-2.el7.x86_64.rpm
yum install libaio-devel
yum install libibverbs -y
yum install libpmem -y
yum install librados2 -y
yum install librbd1
rpm -ivh fio-3.7-2.el7.x86_64.rpm
4、yum安装(不推荐)
yum install fio
5、测试
fio
二、FIO工具使用方法:
-
–rw=randwrite:定义测试时的读写策略,可选值如下:随机读:randread,随机写:randwrite,顺序读: read,顺序写:write,混合随机读写:randrw0
-
-ioengine=libaio:libaio指的是异步模式,如果是同步就要用sync。定义fio如何下发IO请求,通常有同步IO和异步IO:同步IO一次只能发出一个IO请求, 等待内核完成后才返回。这样对于单个线程IO队列深度总是小于1,但是可以透过多个线程并发执行来解决。通常会用16~32个线程同时工作把IO队列深度塞满。异步IO则通常使用libaio这样的方式一次提交一批IO 请求,然后等待一批的完成,减少交互的次 数,会更有效率
-
–direct=1:定义是否使用direct IO,可选值如下:值为0,表示使用buffered IO;值为1,表示使用 direct IO
–thread:使用pthread_create创建线程,另一种是fork创建进程。进程的开销比线程要大,一般都采用thread测试。
-
-iodepth=64:定义测试时的IO队列深度,默认为1。此处定义的队列深度是指每个线程的队列深度, 如果有多个线程测试,意味着每个线程都是此处定义的队列深度。fio总的IO并发数 =iodepth * numjobs。
-
–filename:定义测试文件(设备)的名称。此处选择文件,则代表测试文件系统的性能,例如:- filename=/opt/fiotest/fiotest.txt;此处选择设备名称,则代表测试裸盘的性能,例:-filename=/dev/vdb1
。如果在已经分区、并创建文件系统,且已写入数据的磁盘上进行性能测试,请注意
filename选择指定文件,以避免覆盖文件系统和原有数据。 -
–size=100M:定义测试IO操作的数据量,若未指定runtime这类参数,fio会将指定大小的数据量全部 读/写完成,然后才停止测试。该参数的值,可以是带单位的数字,比如size=10G,表
示读/写的数据量为10GB;也可是百分数,比如size=20%,表示读/写的数据量占该设
备总文件的20%的空间。建议测试数据量为内存两倍大,尽量避免缓存影响。 -
–group_reporting:定义测试结果显示模式,group_reporting 表示汇总每个进程的统计信息,而非以不同 job汇总展示信息。
其它信息:
- Read=100% Ramdon=100% rw=randread (100%随机读)
- Read=100% Sequence=100% rw=read (100%顺序读)
- Write=100% Sequence=100% rw=write (100%顺序写)
- Write=100% Ramdon=100% rw=randwrite (100%随机写)
- Read=70% Sequence=100% rw=rw, rwmixread=70, rwmixwrite=30
(70%顺序读,30%顺序写) - Read=70% Ramdon=100% rw=randrw, rwmixread=70, rwmixwrite=30
(70%随机读,30%随机写)
每次测试前执行 echo 3 > /proc/sys/vm/drop_caches 清理缓存。
-ioengine=libaio、-iodepth=32可选/可不选
1)顺序写:
fio -direct=1 -iodepth=32 -rw=write -ioengine=libaio -bs=4M -size=128G -numjobs=1
-runtime=600 -group_reporting -filename=/dev/[device] -name=Write_BandWidth_Test
2)随机写:
fio -direct=1-iodepth=128 -rw=randwrite -ioengine=libaio -bs=4K -size=128G - numjobs=1
-runtime=600 -group_reporting -filename=/dev/[device] -name=Rand_Write_IOPS_Test
3)顺序读:
fio -direct=1 -iodepth=32 -rw=read -ioengine=libaio -bs=4M -size=128G -numjobs=1
-runtime=600 -group_reporting -filename=/dev/[device] -name=Read_BandWidth_Test
4)随机读:
fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4K -size=128G - numjobs=1
-runtime=600 -group_reporting -filename=/dev/[device] -name=Rand_Read_IOPS_Test
fio -output=/tmp/100S100W -name=100S100W -filename=/dev/sdb:/dev/sdc:/dev/sdd -ioengine=libaio -direct=1 -blocksize=2M -runtime=300 -rw=randrw -rwmixread=70 -rwmixwrite=30 -iodepth=32 -numjobs=1
三、监控磁盘IO命令
[root@localhost]# iostat -mx 1
Linux 2.6.32-220.el6.x86_64 (localhost.localdomain) XXXX年XX月XX日 _x86_64_ (32 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
12.74 0.00 8.95 0.04 0.00 78.27
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
sda 0.18 10.05 0.31 7.67 0.01 0.07 18.77 0.00 0.28 0.14 0.11
sdb 0.69 0.10 15.74 11.21 0.17 2.45 190.77 0.34 12.10 0.23 0.63
sdc 0.43 0.06 9.58 5.94 0.13 1.20 176.32 0.03 1.70 0.16 0.25```
原文地址:https://blog.csdn.net/zhiboqingyun/article/details/123368887
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_42690.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!