1.磁盘性能测试工具FIO

FIO是常见的磁盘性能测试工具,使用 FIO 时,建议配合使用 libaio 的 I/O 引擎进行测试。

一般使用以下指标衡量硬盘的性能:

IOPS:每秒读/写次数,单位为次(计数)。存储设备的底层驱动类型决定了不同的 IOPS。

吞吐量:每秒的读写数据量,单位为MB/s。

时延:I/O 操作的发送时间到接收确认所经过的时间,单位为秒。

2.测试建议与注意事项

l建议在空闲的、未保存重要数据的硬盘上进行 FIO 测试,并在测试完后重新制作被测硬盘的文件系统。

l测试硬盘性能时,建议直接测试裸数据盘(如 /dev/vdb)。

l测试文件系统性能时,推荐指定具体文件测试(如 /data/file)。

l请不要在系统盘上进行 FIO 测试,避免损坏系统重要文件。

l为避免底层文件系统元数据损坏导致数据损坏,请不要在业务数据盘上进行测试。

参数说明:

参数名

说明

取值样例

bs

每次请求的块大小。取值包括4k、8k及16k等

4k

ioengine

I/O 引擎。推荐使用 Linux 的异步 I/O 引擎。

libaio

direct

指定 direct 模式。

True(1)表示指定 O_DIRECT 标识符,忽略 I/O 缓存,数据直写。

False(0)表示不指定 O_DIRECT 标识符。

默认为 True(1)。

1

rw

读写模式。取值包括顺序读(read)、顺序写(write)、随机读

(randread)、随机写(randwrite)、混合随机读写(randrw)和混合

顺序读写(rw,readwrite)。

read

time_based

指定采用时间模式。无需设置该参数值,只要 FIO 基于时间来运行。

N/A

runtime

指定测试时长,即 FIO 运行时长

600

refill_buffers

FIO 将在每次提交时重新填充 I/O 缓冲区。默认设置是仅在初始时填充并重

用该数据。

N/A

norandommap

在进行随机 I/O 时,FIO 将覆盖文件的每个块。若给出此参数,则将选择新

的偏移量而不查看 I/O 历史记录。

N/A

randrepeat

本随机序列是否可重复,True(1)表示随机序列可重复,False(0)表示随

机序列不可重复。默认为 True(1)。

0

group_reporting

多个 job 并发时,打印整个 group 的统计值。

N/A

name

job 的名称。

fio-read

size

I/O 测试的寻址空间。

100GB

filename

测试对象,即待测试的磁盘设备名称。

/dev/sdb

zero_buffers

用0初始化系统buffer

nrfiles=8

每个进程生成文件的数量

3.常见测试方案

3.1读性能测试用例

普通模式:

#4k随机读

$ fio --bs=4k --ioengine=libaio --iodepth=128 --direct=1 --rw=randwrite --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb

#8k随机读

$ fio --bs=8k --ioengine=libaio --iodepth=128 --direct=1 --rw=randwrite --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb

#64k随机读

$ fio --bs=64k --ioengine=libaio --iodepth=128 --direct=1 --rw=randwrite --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb

#1M随机读

$ fio --bs=1m --ioengine=libaio --iodepth=128 --direct=1 --rw=randwrite --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb

3.2写性能测试用例

普通模式:

#4k随机写

$ fio --bs=4k --ioengine=libaio --iodepth=128 --direct=1 --rw=randwrite --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb

#8k随机写

$ fio --bs=8k --ioengine=libaio --iodepth=128 --direct=1 --rw=randwrite --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb

#64k随机写

$ fio --bs=64k --ioengine=libaio --iodepth=128 --direct=1 --rw=randwrite --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb

#1M随机写

$ fio --bs=1m --ioengine=libaio --iodepth=128 --direct=1 --rw=randwrite --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb

3.3吞吐测试用例

4M顺序写

$ fio --bs=4m --ioengine=libaio --iodepth=128 --direct=1 --rw=write --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb

#4M顺序读

$ fio --bs=4m --ioengine=libaio --iodepth=128 --direct=1 --rw=read --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb

3.4 混合读写测试用例

普通模式:

#4k随机读写 70%读30%写

$ fio --bs=4k --ioengine=libaio --iodepth=128 --direct=1 --rw=randrw –rwmixread=70  --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb

#4k随机读写 70%写30%读

$ fio --bs=4k --ioengine=libaio --iodepth=128 --direct=1 --rw=randrw –rwmixread=30  --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb

#4k随机读写 50%读50%写

$ fio --bs=4k --ioengine=libaio --iodepth=128 --direct=1 --rw=randrw –rwmixread=50  --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb

#64k随机读写 70%读30%写

$ fio --bs=64k --ioengine=libaio --iodepth=128 --direct=1 --rw=randrw –rwmixread=70  --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb

#64k随机读写 70%写30%读

$ fio --bs=64k --ioengine=libaio --iodepth=128 --direct=1 --rw=randrw –rwmixread=30  --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb

#64k随机读写 50%读50%写

$ fio --bs=64k --ioengine=libaio --iodepth=128 --direct=1 --rw=randrw –rwmixread=50  --time_based --runtime=300 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-write --size=1G --filename=/dev/vdb

4.云硬盘测试方案

4.1时延性能测试用例

bs = 4k iodepth = 1:随机读/写测试,能反映硬盘的时延性能
执行以下命令,测试硬盘的随机读时延

fio -bs=4k -ioengine=libaio -iodepth=1 -direct=1 -rw=randread -time_based -runtime=600  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randread-lat --size=10G -filename=/dev/vdb

执行以下命令,测试硬盘的随机写时延。

fio -bs=4k -ioengine=libaio -iodepth=1 -direct=1 -rw=randwrite -time_based -runtime=600  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randwrite-lat --size=10G -filename=/dev/vdb

执行以下命令,测试 SSD 云硬盘的随机混合读写时延性能。

fio --bs=4k --ioengine=libaio --iodepth=1 --direct=1 --rw=randrw --time_based --runtime=100 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-read --size=1G --filename=/dev/vdb

测试结果如下图所示:

4.2吞吐性能测试用例

bs = 128k iodepth = 32:顺序读/写测试,能反映硬盘的吞吐性能
执行以下命令,测试硬盘的顺序读吞吐带宽。

fio -bs=128k -ioengine=libaio -iodepth=32 -direct=1 -rw=read -time_based -runtime=600  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-read-throughput --size=10G -filename=/dev/vdb

执行以下命令,测试硬盘的顺序写吞吐带宽。

fio -bs=128k -ioengine=libaio -iodepth=32 -direct=1 -rw=write -time_based -runtime=600  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-write-throughput --size=10G -filename=/dev/vdb

执行以下命令,测试 SSD 云硬盘的顺序读吞吐性能。

fio --bs=128k --ioengine=libaio --iodepth=32 --direct=1 --rw=read --time_based --runtime=100 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-rw --size=1G --filename=/dev/vdb

测试结果如下图所示

4.3 IOPS性能测试用例

bs = 4k iodepth = 32:随机读/写测试,能反映硬盘的 IOPS 性能
执行以下命令,测试硬盘的随机读 IOPS。

fio -bs=4k -ioengine=libaio -iodepth=32 -direct=1 -rw=randread -time_based -runtime=600  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randread-iops --size=10G -filename=/dev/vdb

执行以下命令,测试硬盘的随机写 IOPS。

fio -bs=4k -ioengine=libaio -iodepth=32 -direct=1 -rw=randwrite -time_based -runtime=600  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randwrite-iops --size=10G -filename=/dev/vdb

测试 SSD 云硬盘的随机读 IOPS 性能。如下图所示:

性能测试工具_磁盘性能测试工具fio相关推荐

  1. 最好用的_古书制作工具_古籍排版工具_古文排版_自动生成古书_多种古书风格_古籍制作工具

    古书制作工具_古籍排版工具使用方法 前言 最好用的古书制作工具, 最好用的古籍排版工具, 最好用的古籍制作工具, 最好用的古文排版, 自动生成古书, 多种古书风格 一.看下源图片见最后面 二.使用步骤 ...

  2. 最好用的_古书制作工具_古籍排版工具_古文排版_自动生成古书_多种古书风格_古籍制作工具_个性化书籍制作工具

    古书制作工具_古籍排版工具使用方法 前言 最好用的古书制作工具, 最好用的古籍排版工具, 最好用的古籍制作工具, 最好用的古文排版, 自动古书排版, 自动书籍排版, 自动生成古书, 多种古书风格 可自 ...

  3. windows server 2016磁盘安全与管理_磁盘管理工具哪一款好用?

    磁盘管理是我利用计算机执行常规任务时,通过一组磁盘管理应用程序的形式提供给用户的操作.一款优质的磁盘管理工具不仅能够提高电脑性能,同时还能有效地帮助我们管理磁盘空间,释放更多的自由内存. 市面上磁盘管 ...

  4. linux磁盘文件检查修复工具下载,磁盘修复工具(TestDisk)

    TestDisk是一款专业的磁盘修复工具,可以修复由于软件缺陷或某些病毒导致的分区丢失或分区表丢失导致磁盘无法启动的问题.TestDisk能够检测大量文件系统,包括NTFS,FAT12,FAT16,F ...

  5. seo自动工具_【SEO工具】搭建一个网站需要用到哪些SEO工具?

    ? 前言:SEO常用工具建站篇的内容来自最近建站的操作经验,之后还会推荐其他常用SEO工具也会分享自己写的工具,欢迎关注. " 内容大纲: 建站系统 首页关键词挖掘和布局 内容采集和发布 内 ...

  6. seo伪原创工具_伪原创工具哪个好用?

    在日常优化工作过程中,一个站长是需要同时管理好几个网站的,所以导致没有时间或精力写出更多的原创内容,在这个时候就需要借助伪原创工具来实现内容更新的目的了,比较实用的伪原创工具主要有:石青.小发猫.魔术 ...

  7. 制定交叉编译工具_制作交叉编译工具链的方法总结(详细)

    网上这类文章比较多,但是都不是很具体,刚好有门课结课论文要写这个,所以就总结了一下.以下的过程都是在ubuntu7.10上实际运行过的. 手工制作交叉编译工具 在制作工具开始前先要选好所需要的Binu ...

  8. 速卖通关键词挖掘工具_利用SEO工具挖掘同行竞争对手关键词数据快速布局网站词库...

    工欲善其事必先利其器,这句话告诉我们,善用工具,往往会起到很好的效果.对于SEO来说,做排名有很多方面的工作,这其中网站内容是非常重要的部分.而网站内容是围绕关键词的布局而展开.所以一个网站的关键词布 ...

  9. 关键词挖掘工具_关键词拓展工具集合

    优化网站的关键词,首先要建立关键词库,那么要拓展和挖掘海量的关键词,我们除了手动去搜索引擎里搜索,收集下拉框.相关搜索,还有没有更丰富的关键词挖掘工具呢?那么,今天网睿seo公司的就会给大家分享下目前 ...

最新文章

  1. pynput使用简单说明
  2. iPad上面的emoj是一个很有趣并且很好看的来根据你自己的表情来生成头像的方法
  3. 2015年第六届蓝桥杯 - 省赛 - C/C++大学A组 - H. 饮料换购
  4. why context node binding does not work in pop up window case
  5. matlab函数采样,[转载]matlab采样函数
  6. 微软发布自己定制的 Linux 内核和发行版,面向物联网
  7. python-字典-定义-增删改取
  8. dismiss android,[转]Android对话框中dismiss和cancel、hide的区别
  9. Oracle PL/SQL 程序设计读书笔记 - 第13章 其他数据类型
  10. 创业者都认为经营一家新公司最主要的目标是融资
  11. PHP整站迁移空间,Discuz! X2.5 整站搬家迁移升级教程
  12. Java中的输入、输出流
  13. 利用SPSS进行多重线性回归分析-基础篇
  14. 导航条UIBarButtonItem添加图片,如何避免渲染
  15. windows保护无法启动修复服务器,命令修复Win10系统提示Windows 资源保护无法启动修复服务的解决方法...
  16. 具体时间转换cron表达式
  17. 苹果拼图软件测试,视频照片拼图APP
  18. 微创脑科学通过上市聆讯:年营收3.8亿 年内盈利降47%
  19. 编写程序实现输入一个不超过100的十进制正整数,输出与其相等的二进制形式
  20. BootStrap4登录表单验证示例

热门文章

  1. linux crontab环境变量,Linux下crontab内环境变量与Shell环境变量的关系【转】
  2. MySQL基础之数据类型介绍
  3. Ubunt pip升级到指定版本
  4. Python 一个判断对象是否是一个已知类型的函数-isinstance()
  5. python基础教程:对象之间的交互
  6. python中8大排序(原理+代码)
  7. Django | 执行项目下指定的脚本
  8. 电子计算机之父冯.诺依曼的主要贡献,约翰·冯·诺依曼,约翰·冯·诺依曼的生平,贡献等...
  9. mysql数据库断开连接_解决mysql服务器在无操作超时主动断开连接的情况
  10. arm-linux 程序开发入门(QT窗口应用程序、编码、交叉编译、调试)(三机器和双机器搭建方法)(笔记)