fio可以用来测试磁盘IO

常用的参数如下:

filename=/dev/emcpowerb 支持文件系统或者裸设备,-filename=/dev/sda2或-filename=/dev/sdb

direct=1                测试过程绕过机器自带的buffer,使测试结果更真实

rw=randwread            测试随机读的I/O

rw=randwrite            测试随机写的I/O

rw=randrw                测试随机混合写和读的I/O

rw=read                  测试顺序读的I/O

rw=write测试顺序写的I/O

rw=rw                    测试顺序混合写和读的I/O

bs=4k                    单次io的块文件大小为4k

bsrange=512-2048        同上,提定数据块的大小范围

size=5g                  本次的测试文件大小为5g,以每次4k的io进行测试

numjobs=30              本次的测试线程为30

runtime=1000            测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止

ioengine=psync          io引擎使用pync方式,如果要使用libaio引擎,需要yum install libaio-devel包

rwmixwrite=30在混合读写的模式下,写占30%group_reporting          关于显示结果的,汇总每个进程的信息

此外

lockmem=1g              只使用1g内存进行测试

zero_buffers            用0初始化系统buffer

nrfiles=8每个进程生成文件的数量

测试:

测试随即读:

fio -filename=/home/intellif/pandaTest -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=10G -numjobs=50 -runtime=180 -group_reporting -name=rand_100read_4k

输出如下:

输出结果

输出结果的说明:

read列,io表明读写磁盘的数据量。bw代表磁盘的带宽,随即读还是很慢的,大约5M/s(和此前自己认为的相差甚远),iops是每秒的io数量,runt是总共花费的时间。

lat(usec),代表io的延迟,单位是纳秒,250=0.02%,表示有0.02%的io花费了250ns

lat(msec0,代表延迟,单位是毫秒,2=0.24%表示有0.24的io花费了3ms,

大部分磁盘随机读的io在10-100ms之间。

其他的输出,现在还不知道什么意思,以后再研究。

测试随即写:

fio -filename=/home/intellif/pandaTest -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=10G -numjobs=50 -runtime=180 -group_reporting -name=rand_100write_4k

输出如下:

测试结果

随即写的话速率更低,4.4M/秒。

顺序读的测试如下:

fio -filename=/home/intellif/pandaTest -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=4k -size=10G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100read_4k

输出如下:

测试结果

顺序读达到了848M/秒!!!!没有那么夸张吧,大部分读只需要2ns!!!!!!!!!!!!!!!!难道用到了预读,缓存这些???

顺序写的测试如下:

fio -filename=/home/intellif/pandaTest -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=4k -size=10G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100write_4k

输出如下:

输出结果

顺序写的带宽在25M/s左右,和顺序读的速率差别太大了吧。

100%随机,70%读,30%写

fio -filename=/home/intellif/pandaTest -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=4k -size=10G -numjobs=50 -runtime=180 -group_reporting -name=randrw_70read_4k

输出结果如下:

测试结果

随机的话读写速度都不咋地。

io=执行了多少M的IO

bw=平均IO带宽

iops=IOPS

runt=线程运行时间

slat=提交延迟

clat=完成延迟

lat=响应时间

bw=带宽

cpu=利用率

IO depths=io队列

IO submit=单个IO提交要提交的IO数

IO complete=Like the above submit number, but for completions instead.

IO issued=The number of read/write requests issued, and how many of them were short.

IO latencies=IO完延迟的分布

io=总共执行了多少size的IO

aggrb=group总带宽

minb=最小.平均带宽.

maxb=最大平均带宽.

mint=group中线程的最短运行时间.

maxt=group中线程的最长运行时间.

ios=所有group总共执行的IO数.

merge=总共发生的IO合并数.

ticks=Number of ticks we kept the disk busy.

io_queue=花费在队列上的总共时间.

util=磁盘利用率

4、扩展之IO队列深度

在某个时刻,有N个inflight的IO请求,包括在队列中的IO请求、磁盘正在处理的IO请求。N就是队列深度。

加大硬盘队列深度就是让硬盘不断工作,减少硬盘的空闲时间。

加大队列深度 -> 提高利用率 -> 获得IOPS和MBPS峰值 ->注意响应时间在可接受的范围内,

增加队列深度的办法有很多,使用异步IO,同时发起多个IO请求,相当于队列中有多个IO请求,多线程发起同步IO请求,相当于队列中有多个IO请求。

增大应用IO大小,到达底层之后,会变成多个IO请求,相当于队列中有多个IO请求 队列深度增加了。

队列深度增加了,IO在队列的等待时间也会增加,导致IO响应时间变大,这需要权衡。

为何要对磁盘I/O进行并行处理呢?主要目的是提升应用程序的性能。这一点对于多物理磁盘组成的虚拟磁盘(或LUN)显得尤为重要。

如果一次提交一个I/O,虽然响应时间较短,但系统的吞吐量很小。

相比较而言,一次提交多个I/O既缩短了磁头移动距离(通过电梯算法),同时也能够提升IOPS。

假如一部电梯一次只能搭乘一人,那么每个人一但乘上电梯,就能快速达到目的地(响应时间),但需要耗费较长的等待时间(队列长度)。

因此一次向磁盘系统提交多个I/O能够平衡吞吐量和整体响应时间。

Linux系统查看默认队列深度:

lsscsi -l

linux磁盘fio压力测试,fio进行磁盘压力测试相关推荐

  1. 磁盘测试----fio

    测试前提 我们在进行测试时,都会分清楚: 测试对象:要区分硬盘.SSD.RAID.SAN.云硬盘等,因为它们有不同的特点 测试指标:IOPS和MBPS(吞吐率),下面会具体阐述 测试工具:Linux下 ...

  2. 内核参数 linux dd,Linux dd 命令详解(测磁盘的吞吐量)

    一.dd命令的解释 dd命令主要是用来块拷贝一个指定大小的文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注 ...

  3. Linux dd 命令详解(测磁盘的吞吐量)

    一.dd命令的解释 dd命令主要是用来块拷贝一个指定大小的文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注 ...

  4. Linux监控操作系统CPU、内存、磁盘、网络和dstat

    Linux操作系统监控 top命令 free命令- 内存监控 df命令 - 磁盘空间监控 iostat命令- 磁盘IO监控 vmstat命令-综合监控工具 netstat命令-网络监控 dstat- ...

  5. Linux的基本学习(四)——磁盘与文件系统管理

    前言: 承接Linux的基本学习(三)我们接着往下走 认识Linux文件系统: 整块磁盘的组成主要有: 圆形的碟片(主要记录数据) 机械手臂,与在机械手臂上的磁头(擦写碟片上的数据) 主轴马达,可以转 ...

  6. Linux系统下10款文件和磁盘加密工具

    本文我们将重点转向加密方法,因为我们为您的Linux机器提供了10个最佳文件和磁盘加密软件. 1.Tomb Tomb是一个免费的开源工具,可以轻松加密和备份GNU/Linux系统上的文件. 它由一个简 ...

  7. Linux学习笔记(十一):磁盘配额、磁盘阵列与逻辑卷

    Linux学习笔记(十一):磁盘配额.磁盘阵列与逻辑卷 磁盘配额Quota 磁盘阵列RAID RAID level 软件磁盘阵列 逻辑卷管理器LVM 基本概念:PV, VG, LV 逻辑卷创建与管理 ...

  8. Linux的基本学习(十一)——磁盘配额 与 磁盘阵列

    前言: 承接前面的内容来继续学习Linux 磁盘配额(Quota)的应用于实践 磁盘配额 由于Linux系统是多人多任务的环境,所以会有多人共同使用一个磁盘空间的情况发生.如果其中有少数几个用户大量地 ...

  9. Linux大神进阶十五:磁盘管理

    文章目录 1.理解 2.常见命令 3.实验结果 1.理解 (1)磁盘管理:是一项计算机使用时的常规任务,它是以一组磁盘管理应用程序的形式提供给用户的:它们位于"计算机管理"控制台中 ...

最新文章

  1. JQUERY打造隐藏在左侧的弹性弹出菜单
  2. html点击隐藏点击出现,点击按钮,内容隐藏,再点击一下,然后内容又显示了,这种效果怎么做?然后默认的是隐藏的...
  3. OpenStack云计算快速入门教程
  4. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(9月24日-9月30日)
  5. 【编程1】 Two Sum + 哈希算法
  6. 【NLP】大模型时代,我们真的不再需要分词了吗?
  7. 根据map键值对,生成update与select语句,单条执行语句
  8. Excel只能输入不能修改
  9. oracle 导入 导出 imp、exp
  10. 奇安信代码卫士帮助微软和 Oracle 修复多个高危漏洞,获官方致谢
  11. ckeditor 触发事件(案例)
  12. ie7/8卸载工具 降级到IE6
  13. Java如何使用JDOM解析XML呢?
  14. 个人征信系统机构接入工作流程
  15. vue.js根据数据循环生成表格_Vue Elenent实现表格相同数据列合并
  16. 【Matlab水果识别】形态学水果大小识别【含GUI源码 920期】
  17. linux的input命令,认识linux input子系统(一)
  18. 【每周CV论文推荐】基于GAN的图像修复值得阅读的文章
  19. MATLAB直接输出棋盘格标定板
  20. Linux树莓派开发——刷机

热门文章

  1. mysql外部排序_深入浅出MySQL优先队列(你一定会踩到的order by limit 问题)
  2. python如何复制oracle数据_Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法...
  3. python无法安装第三方库read time out_解决pip install的时候报错timed out的问题
  4. android 内容显示栏,android – 在工具栏下显示内容
  5. 日常问题——hadoop启动后发现namenode没有启动,但是排除了格式化过度的问题
  6. 在命令行模式下管理SELinux
  7. Qt自定义QML模块
  8. Give Candies【快速幂+欧拉】
  9. Google File System 学习笔记
  10. 深入理解Java的三种工厂模式