linux磁盘fio压力测试,fio进行磁盘压力测试
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进行磁盘压力测试相关推荐
- 磁盘测试----fio
测试前提 我们在进行测试时,都会分清楚: 测试对象:要区分硬盘.SSD.RAID.SAN.云硬盘等,因为它们有不同的特点 测试指标:IOPS和MBPS(吞吐率),下面会具体阐述 测试工具:Linux下 ...
- 内核参数 linux dd,Linux dd 命令详解(测磁盘的吞吐量)
一.dd命令的解释 dd命令主要是用来块拷贝一个指定大小的文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注 ...
- Linux dd 命令详解(测磁盘的吞吐量)
一.dd命令的解释 dd命令主要是用来块拷贝一个指定大小的文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注 ...
- Linux监控操作系统CPU、内存、磁盘、网络和dstat
Linux操作系统监控 top命令 free命令- 内存监控 df命令 - 磁盘空间监控 iostat命令- 磁盘IO监控 vmstat命令-综合监控工具 netstat命令-网络监控 dstat- ...
- Linux的基本学习(四)——磁盘与文件系统管理
前言: 承接Linux的基本学习(三)我们接着往下走 认识Linux文件系统: 整块磁盘的组成主要有: 圆形的碟片(主要记录数据) 机械手臂,与在机械手臂上的磁头(擦写碟片上的数据) 主轴马达,可以转 ...
- Linux系统下10款文件和磁盘加密工具
本文我们将重点转向加密方法,因为我们为您的Linux机器提供了10个最佳文件和磁盘加密软件. 1.Tomb Tomb是一个免费的开源工具,可以轻松加密和备份GNU/Linux系统上的文件. 它由一个简 ...
- Linux学习笔记(十一):磁盘配额、磁盘阵列与逻辑卷
Linux学习笔记(十一):磁盘配额.磁盘阵列与逻辑卷 磁盘配额Quota 磁盘阵列RAID RAID level 软件磁盘阵列 逻辑卷管理器LVM 基本概念:PV, VG, LV 逻辑卷创建与管理 ...
- Linux的基本学习(十一)——磁盘配额 与 磁盘阵列
前言: 承接前面的内容来继续学习Linux 磁盘配额(Quota)的应用于实践 磁盘配额 由于Linux系统是多人多任务的环境,所以会有多人共同使用一个磁盘空间的情况发生.如果其中有少数几个用户大量地 ...
- Linux大神进阶十五:磁盘管理
文章目录 1.理解 2.常见命令 3.实验结果 1.理解 (1)磁盘管理:是一项计算机使用时的常规任务,它是以一组磁盘管理应用程序的形式提供给用户的:它们位于"计算机管理"控制台中 ...
最新文章
- JQUERY打造隐藏在左侧的弹性弹出菜单
- html点击隐藏点击出现,点击按钮,内容隐藏,再点击一下,然后内容又显示了,这种效果怎么做?然后默认的是隐藏的...
- OpenStack云计算快速入门教程
- Silverlight/Windows8/WPF/WP7/HTML5周学习导读(9月24日-9月30日)
- 【编程1】 Two Sum + 哈希算法
- 【NLP】大模型时代,我们真的不再需要分词了吗?
- 根据map键值对,生成update与select语句,单条执行语句
- Excel只能输入不能修改
- oracle 导入 导出 imp、exp
- 奇安信代码卫士帮助微软和 Oracle 修复多个高危漏洞,获官方致谢
- ckeditor 触发事件(案例)
- ie7/8卸载工具 降级到IE6
- Java如何使用JDOM解析XML呢?
- 个人征信系统机构接入工作流程
- vue.js根据数据循环生成表格_Vue Elenent实现表格相同数据列合并
- 【Matlab水果识别】形态学水果大小识别【含GUI源码 920期】
- linux的input命令,认识linux input子系统(一)
- 【每周CV论文推荐】基于GAN的图像修复值得阅读的文章
- MATLAB直接输出棋盘格标定板
- Linux树莓派开发——刷机
热门文章
- mysql外部排序_深入浅出MySQL优先队列(你一定会踩到的order by limit 问题)
- python如何复制oracle数据_Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法...
- python无法安装第三方库read time out_解决pip install的时候报错timed out的问题
- android 内容显示栏,android – 在工具栏下显示内容
- 日常问题——hadoop启动后发现namenode没有启动,但是排除了格式化过度的问题
- 在命令行模式下管理SELinux
- Qt自定义QML模块
- Give Candies【快速幂+欧拉】
- Google File System 学习笔记
- 深入理解Java的三种工厂模式