前言

fio是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。

测试准备

工具:fio - Flexible IO Tester

官方网站:

http://freecode.com/projects/fio

http://brick.kernel.dk/snaps/

注意: 性能测试建议直接通过写裸盘的方式进行测试,会得到较为真实的数据。但直接测试裸盘会破坏文件系统结构,导致数据丢失,请在测试前确认磁盘中数据已备份。

CentOS可以直接使用yum安装

#yum安装
yum install libaio-devel fio
#手动安装
yum install libaio-devel
wget http://brick.kernel.dk/snaps/fio-2.2.10.tar.gz
tar -zxvf fio-2.2.10.tar.gz
cd fio-2.2.10
make $ make install
For gfio, gtk 2.18 (or newer), associated glib threads, and cairo are required
to be installed.  gfio isn't built automatically and can be enabled
with a --enable-gfio option to configure.
 
示例:
对磁盘进行1024K顺序写
fio cap_1024K_seq_write
[global]
ioengine=libaio
bs=1024K
rw=write
ramp_time=6
runtime=300
direct=1
iodepth=16
#rwmixwrite=20
time_based
[test]
filename=/dev/sda
numjobs=1
结果:
test: (g=0): rw=write, bs=1M-1M/1M-1M/1M-1M, ioengine=libaio, iodepth=16
fio-2.8
Starting 1 process
Jobs: 1 (f=1): [W(1)] [100.0% done] [0KB/68198KB/0KB /s] [0/66/0 iops] [eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=4676: Thu Apr  7 17:22:37 2016
  write: io=20075MB, bw=68464KB/s, iops=66, runt=300255msec   #执行多少IO,平均带宽,线程运行时间
    slat (usec): min=51, max=5732, avg=291.11, stdev=262.47          #提交延迟
    clat (usec): min=1, max=2235.8K, avg=239043.28, stdev=153384.41   #完成延迟
     lat (usec): min=367, max=2235.9K, avg=239337.72, stdev=153389.57 #响应时间
    clat percentiles (usec):
     |  1.00th=[  221],  5.00th=[  442], 10.00th=[ 1004], 20.00th=[108032],
     | 30.00th=[228352], 40.00th=[248832], 50.00th=[257024], 60.00th=[268288],
     | 70.00th=[280576], 80.00th=[301056], 90.00th=[342016], 95.00th=[477184],
     | 99.00th=[806912], 99.50th=[864256], 99.90th=[1122304], 99.95th=[1171456],
     | 99.99th=[1646592]
    bw (KB  /s): min=  170, max=204800, per=100.00%, avg=68755.07, stdev=27034.84
    lat (usec) : 2=0.01%, 4=0.13%, 50=0.06%, 100=0.26%, 250=1.04%
    lat (usec) : 500=4.53%, 750=2.61%, 1000=1.33%
    lat (msec) : 2=1.18%, 4=0.15%, 10=0.77%, 20=0.77%, 50=1.50%
    lat (msec) : 100=4.43%, 250=23.48%, 500=53.23%, 750=3.09%, 1000=1.30%
    lat (msec) : 2000=0.19%, >=2000=0.01%
  cpu          : usr=0.03%, sys=2.11%, ctx=19066, majf=0, minf=7
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=103.8%, 32=0.0%, >=64=0.0%   #io队列
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%  #单个IO提交要提交的IO数
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.1%, 32=0.0%, 64=0.0%, >=64=0.0%  
     issued    : total=r=0/w=20060/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=16    #IO完延迟的分布
 
Run status group 0 (all jobs):
  WRITE: io=20075MB, aggrb=68464KB/s(group总带宽), minb=68464KB/s(最小平均带宽), maxb=68464KB/s(最大平均带宽), mint=300255msec(group中线程的最短运行时间), maxt=300255msec(group中线程的最长运行时间)
 
Disk stats (read/write):
  sda: ios=23/41769(所有group总共执行的IO数), merge=0/149(总共发生的IO合并数), ticks=706/9102766(Number of ticks we kept the disk busy), in_queue=9105836(花费在队列上的总共时间), util=100.00%(磁盘利用率)
 
FAQ:
1.执行报:No package 'gtk+-2.0' found,No package 'gthread-2.0' found,configure: gtk and gthread not found
   A:yum install gtk2-devel
2.执行fio -name test -runtime=30 -filename=/dev/sda3 -ioengine=libaio -direct=1 -bs=1024K -iodepth=16 -rw=write -time_based:
   报:fio: /dev/sda3 appears mounted, and 'allow_mounted_write' isn't set. Aborting.
   A:对sda压测

FIO使用指南的更多相关文章

  1. 【转】FIO使用指南

    原文地址:http://blog.csdn.net/yuesichiu/article/details/8722417 Fio压测工具和io队列深度理解和误区 这个文档是对fio-2.0.9 HOWT ...

  2. fio 测试 磁盘I/O: ls -1 /sys/block/sda/queue/ | awk '{cmd="cat "i$0; print i$0; system(cmd) }' i=`pwd`'/'

    小型计算机系统接口(SCSI,Small Computer System Interface) SAS(Serial Attached SCSI,串列SCSI) SCSI 硬盘名称: sd[a-p] ...

  3. JuiceFS 性能评估指南

    JuiceFS 是一款面向云原生环境设计的高性能 POSIX 文件系统,任何存入 JuiceFS 的数据都会按照一定规则拆分成数据块存入对象存储(如 Amazon S3),相对应的元数据则持久化在独立 ...

  4. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  5. UE4新手之编程指南

    虚幻引擎4为程序员提供了两套工具集,可共同使用来加速开发的工作流程. 新的游戏类.Slate和Canvas用户接口元素以及编辑器功能可以使用C++语言来编写,并且在使用Visual Studio 或 ...

  6. JavaScript权威指南 - 对象

    JavaScript对象可以看作是属性的无序集合,每个属性就是一个键值对,可增可删. JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等. JavaScript对象除了可以保持自 ...

  7. JavaScript权威指南 - 数组

    JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...

  8. const extern static 终极指南

    const extern static 终极指南 不管是从事哪种语言的开发工作,const extern static 这三个关键字的用法和原理都是我们必须明白的.本文将对此做出非常详细的讲解. co ...

  9. Atitit.研发管理软件公司的软资产列表指南

    Atitit.研发管理软件公司的软资产列表指南 1. Isv模型下的软资产1 2. 实现层面implet1 3. 规范spec层1 4. 法则定律等val层的总结2 1. Isv模型下的软资产 Sof ...

随机推荐

  1. <s:textfield>标签

    中的value=“”还是挺有用的,比如说更新之前,根据需要更新的用户(地址.商品等等等等)的id,在updateInput方法中,先做一些准备,根据这个id去数据库取属性出来,放到ActionCont ...

  2. iOS6的旋屏控制技巧

    在iOS5.1 和 之前的版本中, 我们通常利用 shouldAutorotateToInterfaceOrientation: 来单独控制某个UIViewController的旋屏方向支持,比如: ...

  3. Android SnackBar使用方法

    SnackBar是 Android Support Library 22.2.0 里面新增提供的一个控件,类似于Toast的使用 使用方法 Snackbar snackbar = Snackbar.m ...

  4. [翻译]lpeg入门教程

    原文地址:http://lua-users.org/wiki/LpegTutorial 简单匹配 LPeg是一个用于文本匹配的有力表达方式,比Lua原生的字符串匹配和标准正则表达式更优异.但是,就像其 ...

  5. Socket编程基础——无连接UDP

    与面向连接的网络连接相比,无连接的网络通信不需要在服务器与客户端之间建立连接.面向非连接的Socket通信是基于UDP的,服务器端不需要调用listen()和accept()函数来等待客户端的连接:客 ...

  6. rtabmap_ros安装---43

    摘要: 原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 一.前言 RTAB-Map (Real-Time Appearance-Based Mappin ...

  7. Linux字符界面的优势

    优势一:字符界面占用的系统资源更少,更加适合服务器 优势二:字符界面减少了出错.被攻击的可能性(一.二决定了服务器一般不装图形界面,安全稳定优先)

  8. I/O扩展篇(基于74HC164/74HC165)

    在我们的单片机应用系统中,常常会遇到I/O口不够的情况.譬如说接有外部RAM而且要求有16个以上的按键,8位数码管以上的显示.而且还不包括其它的外围器件.这时整个系统的I/O资源就很吃紧了.系统的扩展 ...

  9. UML常用图的几种关系的总结

    在UML的 类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization), 关联(Association), 聚合(Aggregation), 组合(Com ...

  10. 【转载】开发备必:WEB前端开发规范文档

    规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必 须按本文档规范进行前台页面开发. 本文档如有不对或者 ...