当前位置:   article > 正文

Linux磁盘IO测试工具:fio_linux fio

linux fio

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

目前主流的第三方IO测试工具有fio、iometer 和 Orion,这三种工具各有千秋,在linux 下也可以使用dd 进行简单的磁盘(文件系统)测试。

fio在Linux系统下使用比较方便,iometer在window系统下使用比较方便,Orion是oracle的IO测试软件,可在没有安装oracle数据库的情况下模拟oracle数据库场景的读写。

Multithreaded IO generation tool , FIO 是一个多线程io生成工具,可以生成多种IO模式,用来测试磁盘设备的性能(也包含文件系统:如针对网络文件系统 NFS 的IO测试);

Description  : fio is an I/O tool that will spawn a number of threads or processes doing

             : a particular type of io action as specified by the user.  fio takes a

             : number of global parameters, each inherited by the thread unless

             : otherwise parameters given to them overriding that setting is given.

             : The typical use of fio is to write a job file matching the io load

             : one wants to simulate.

安装:

  1. yum install fio
  2. yum info fio
  3. apt install gfio # fio 图形测试工具

项目地址:

GitHub - axboe/fio: Flexible I/O Tester

fio - fio - Flexible IO Tester

磁盘处理:

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

  1. # 卸载磁盘
  2. umount /mnt/datadir1
  3. # 格式化磁盘
  4. mkfs.ext4 /dev/sdd
  5. # 挂载磁盘
  6. mount -t ext4 /dev/sdd /mnt/datadir1
  7. # 自动挂载,在里面添加该盘
  8. vim /etc/fstab

FIO 工具常用方法:

  1. 参数说明:
  2. filename=/dev/sdb1 测试文件名称,通常选择需要测试的盘的data目录。
  3. direct=1 测试过程绕过机器自带的buffer。使测试结果更真实。
  4. rw=randwrite 测试随机写的I/O
  5. rw=randrw 测试随机写和读的I/O
  6. bs=16k 单次io的块文件大小为16k
  7. bsrange=512-2048 同上,提定数据块的大小范围
  8. size=5g 本次的测试文件大小为5g,以每次4k的io进行测试。
  9. numjobs=30 本次的测试线程为30.
  10. runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。
  11. ioengine=psync io引擎使用pync方式
  12. rwmixwrite=30 在混合读写的模式下,写占30%
  13. group_reporting 关于显示结果的,汇总每个进程的信息。
  14. 此外
  15. lockmem=1g 只使用1g内存进行测试。
  16. zero_buffers 用0初始化系统buffer。
  17. nrfiles=8 每个进程生成文件的数量。
  18. 磁盘读写常用测试点:
  19. 1. Read=100% Ramdon=100% rw=randread (100%随机读)
  20. 2. Read=100% Sequence=100% rw=read100%顺序读)
  21. 3. Write=100% Sequence=100% rw=write100%顺序写)
  22. 4. Write=100% Ramdon=100% rw=randwrite (100%随机写)
  23. 5. Read=70% Sequence=100% rw=rw, rwmixread=70, rwmixwrite=30
  24. 70%顺序读,30%顺序写)
  25. 6. Read=70% Ramdon=100% rw=randrw, rwmixread=70, rwmixwrite=30
  26. (70%随机读,30%随机写)

FIO 工具测试模式:

顺序读写:

read 顺序读

write 顺序写

rw,readwrite 顺序混合读写

随机读写:

randwrite 随机写

randread 随机读

randrw 随机混合读写

测试样例:

[root@docker 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

测试结果:

  1. [root@docker sda]# fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=read -filename=/dev/sda -name="BS 4KB read test" -iodepth=16 -runtime=60
  2. BS 4KB read test: (g=0): rw=read, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=16
  3. fio-3.7
  4. Starting 1 thread
  5. Jobs: 1 (f=1): [R(1)][100.0%][r=89.3MiB/s,w=0KiB/s][r=22.9k,w=0 IOPS][eta 00m:00s]
  6. BS 4KB read test: (groupid=0, jobs=1): err= 0: pid=18557: Thu Apr 11 13:08:11 2019
  7. read: IOPS=22.7k, BW=88.5MiB/s (92.8MB/s)(5313MiB/60001msec)
  8. slat (nsec): min=901, max=168330, avg=6932.34, stdev=1348.82
  9. clat (usec): min=90, max=63760, avg=698.08, stdev=240.83
  10. lat (usec): min=97, max=63762, avg=705.17, stdev=240.81
  11. clat percentiles (usec):
  12. | 1.00th=[ 619], 5.00th=[ 627], 10.00th=[ 627], 20.00th=[ 635],
  13. | 30.00th=[ 635], 40.00th=[ 685], 50.00th=[ 717], 60.00th=[ 725],
  14. | 70.00th=[ 725], 80.00th=[ 725], 90.00th=[ 734], 95.00th=[ 816],
  15. | 99.00th=[ 1004], 99.50th=[ 1020], 99.90th=[ 1057], 99.95th=[ 1057],
  16. | 99.99th=[ 1860]
  17. bw ( KiB/s): min=62144, max=91552, per=100.00%, avg=90669.02, stdev=3533.77, samples=120
  18. iops : min=15536, max=22888, avg=22667.27, stdev=883.44, samples=120
  19. lat (usec) : 100=0.01%, 250=0.01%, 500=0.01%, 750=93.85%, 1000=5.14%
  20. lat (msec) : 2=0.99%, 4=0.01%, 10=0.01%, 50=0.01%, 100=0.01%
  21. cpu : usr=5.35%, sys=23.17%, ctx=1359692, majf=0, minf=17
  22. IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=100.0%, 32=0.0%, >=64=0.0%
  23. submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
  24. complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.1%, 32=0.0%, 64=0.0%, >=64=0.0%
  25. issued rwts: total=1360097,0,0,0 short=0,0,0,0 dropped=0,0,0,0
  26. latency : target=0, window=0, percentile=100.00%, depth=16
  27. Run status group 0 (all jobs):
  28. 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
  29. Disk stats (read/write):
  30. sda: ios=1357472/0, merge=70/0, ticks=949141/0, in_queue=948776, util=99.88%
测试结果中的 “read: IOPS=22.7k, BW=88.5MiB/s (92.8MB/s)(5313MiB/60001msec)” 是我们关注的内容:磁盘的吞吐量bw,这个是顺序读写考察的重点;磁盘的每秒读写次数iops,这个是随机读写考察的重点

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/608935
推荐阅读
相关标签
  

闽ICP备14008679号