加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux 磁盘IO测试工具:FIO

发布时间:2020-12-14 01:42:51 所属栏目:Linux 来源:网络整理
导读:FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证。磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类。 安装: yum install fio yum info fio 项目地址: https://github.com/axboe/fio.git http://git.kernel.d

FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证。磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类。

安装:

yum install fio
yum info fio

项目地址:

https://github.com/axboe/fio.git

http://git.kernel.dk/fio.git

磁盘处理:

fio用于测试磁盘性能,测试之前需要先把要测试的磁盘卸载掉,测试完后需格式化一遍再挂载上去。

# 卸载磁盘
umount /mnt/datadir1
# 格式化磁盘
mkfs.ext4 /dev/sdd
# 挂载磁盘
mount -t ext4 /dev/sdd /mnt/datadir1

# 自动挂载,在里面添加该盘
vim /etc/fstab

FIO 工具常用方法:

参数说明:
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 每个进程生成文件的数量。
磁盘读写常用测试点:
1. Read=100% Ramdon=100% rw=randread (100%随机读)
2. Read=100% Sequence=100% rw=read (100%顺序读)
3. Write=100% Sequence=100% rw=write100%顺序写)
4. Write=100% Ramdon=100% rw=randwrite (100%随机写)
5. Read=70% Sequence=100% rw=rw,rwmixread=70,rwmixwrite=3070%顺序读,30%顺序写)
6. Read=70% Ramdon=100% rw=randrw,rwmixwrite=30
(70%随机读,30%随机写)

测试样例:

[[email?protected] mnt]# fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=20G -numjobs=30 -runtime=1000 -group_reporting -name=yaoxu-sda

本文章,只是资料查找中的简要摘录,详细使用说明,请参考 man fio

测试结果:

[[email?protected] sda]# fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=read -filename=/dev/sda -name="BS 4KB read test" -iodepth=16 -runtime=60
BS 4KB read test: (g=0): rw=read,bs=(R) 4096B-4096B,(W) 4096B-4096B,(T) 4096B-4096B,ioengine=libaio,iodepth=16
fio-3.7
Starting 1 thread
Jobs: 1 (f=1): [R(1)][100.0%][r=89.3MiB/s,w=0KiB/s][r=22.9k,w=0 IOPS][eta 00m:00s]
BS 4KB read test: (groupid=0,jobs=1): err= 0: pid=18557: Thu Apr 11 13:08:11 2019
   read: IOPS=22.7k,BW=88.5MiB/s (92.8MB/s)(5313MiB/60001msec)
    slat (nsec): min=901,max=168330,avg=6932.34,stdev=1348.82
    clat (usec): min=90,max=63760,avg=698.08,stdev=240.83
     lat (usec): min=97,max=63762,avg=705.17,stdev=240.81
    clat percentiles (usec):
     |  1.00th=[  619],5.00th=[  627],10.00th=[  627],20.00th=[  635],| 30.00th=[  635],40.00th=[  685],50.00th=[  717],60.00th=[  725],| 70.00th=[  725],80.00th=[  725],90.00th=[  734],95.00th=[  816],| 99.00th=[ 1004],99.50th=[ 1020],99.90th=[ 1057],99.95th=[ 1057],| 99.99th=[ 1860]
   bw (  KiB/s): min=62144,max=91552,per=100.00%,avg=90669.02,stdev=3533.77,samples=120
   iops        : min=15536,max=22888,avg=22667.27,stdev=883.44,samples=120
  lat (usec)   : 100=0.01%,250=0.01%,500=0.01%,750=93.85%,1000=5.14%
  lat (msec)   : 2=0.99%,4=0.01%,10=0.01%,50=0.01%,100=0.01%
  cpu          : usr=5.35%,sys=23.17%,ctx=1359692,majf=0,minf=17
  IO depths    : 1=0.1%,2=0.1%,4=0.1%,8=0.1%,16=100.0%,32=0.0%,>=64=0.0%
     submit    : 0=0.0%,4=100.0%,8=0.0%,16=0.0%,64=0.0%,>=64=0.0%
     complete  : 0=0.0%,16=0.1%,>=64=0.0%
     issued rwts: total=1360097,0,0 short=0,0 dropped=0,0
     latency   : target=0,window=0,percentile=100.00%,depth=16

Run status group 0 (all jobs):
   READ: bw=88.5MiB/s (92.8MB/s),88.5MiB/s-88.5MiB/s (92.8MB/s-92.8MB/s),io=5313MiB (5571MB),run=60001-60001msec

Disk stats (read/write):
  sda: ios=1357472/0,merge=70/0,ticks=949141/0,in_queue=948776,util=99.88%

fio 有很多测试任务配置文件,在git工程 examples 文件夹中,我们可以使用命令行参数进行直接配置,也可以直接通过配置文件配置一次测试的内容。

参考链接:

https://www.cnblogs.com/bugutian/p/6653083.html

https://www.linuxidc.com/Linux/2017-04/143251.htm

https://github.com/axboe/fio

https://blog.csdn.net/jiecxy/article/details/58197387

保持更新,转载请注明出处。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读