吞吐量和 IOPS 及测试工具 FIO 使用

磁盘I/O的概念

I/O 的概念,从字义来理解就是输入输出。操作系统从上层到底层,各个层次之间均存在 I/O。比如,CPU 有 I/O,内存有 I/O, VMM 有 I/O, 底层磁盘上也有 I/O,这是广义上的 I/O。通常来讲,一个上层的 I/O 可能会产生针对磁盘的多个 I/O,也就是说,上层的 I/O 是稀疏的,下层的 I/O 是密集的。

磁盘的 I/O,顾名思义就是磁盘的输入输出。输入指的是对磁盘写入数据,输出指的是从磁盘读出数据。我们常见的磁盘类型有 ATA、SATA、FC、SCSI、SAS,如图1所示。这几种磁盘中,服务器常用的是 SAS 和 FC 磁盘,一些高端存储也使用 SSD 盘。每一种磁盘的性能是不一样的。

性能评价指标

SAN(Storage Area Network, 存储区域网络)和NAS存储(Network Attached Storage,网络附加存储)一般都具备2个评价指标:IOPS和带宽(throughput),两个指标互相独立又相互关联。体现存储系统性能的最主要指标是IOPS。下面,将介绍一下这两个参数的含义。

  • IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量,I/O请求通常为读或写数据操作请求。

  • 随机读写频繁的应用,如OLTP(Online Transaction Processing),IOPS是关键衡量指标。

什么是 OLTP ?

OLTP 也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。

特征:

支持大量并发,实时性要求很高,交易确定性,并发性要求高并且严格的要求事务的完整、安全性。

另一个重要指标是数据吞吐量(Throughput),指单位时间内可以成功传输的数据数量。对于大量顺序读写的应用,如VOD(Video On Demand),则更关注吞吐量指标。

简而言之:

  • 磁盘的 IOPS,也就是在一秒内,磁盘进行多少次 I/O 读写。

  • 磁盘的吞吐量,也就是每秒磁盘 I/O 的流量,即磁盘写入加上读出的数据的大小。

在知乎上看到对 吞吐量的理解:

 所谓“吞”就是吃进去,“吐”就是吐出来,这一进一出就是吞吐量。比如,一秒吃进去1M bit位,同时又吐出1M bit 位,那么吞吐量 = 1M bit / 秒。不是很明白这里为什么要除以2 ?

IOPS 与吞吐量的关系

  每秒 I/O 吞吐量= IOPS* 平均 I/O SIZE。

IOPS可细分为如下几个指标:

Toatal IOPS,混合读写和顺序随机I``/O``负载情况下的磁盘IOPS,这个与实际I``/O``情况最为相符,大多数应用关注此指标。``Random Read IOPS,100%随机读负载情况下的IOPS。``Random Write IOPS,100%随机写负载情况下的IOPS。``Sequential Read IOPS,100%顺序读负载情况下的IOPS。``Sequential Write IOPS,100%顺序写负载情况下的IOPS。

IOPS 计算公式

对于磁盘来说一个完整的IO操作是这样进行的:

  1. 当控制器对磁盘发出一个IO操作命令的时候,磁盘的驱动臂(Actuator Arm)带读写磁头(Head)离开着陆区(Landing Zone,位于内圈没有数据的区域),移动到要操作的初始数据块所在的磁道(Track)的正上方,这个过程被称为寻址(Seeking),对应消耗的时间被称为寻址时间(Seek Time);

  2. 但是找到对应磁道还不能马上读取数据,这时候磁头要等到磁盘盘片(Platter)旋转到初始数据块所在的扇区(Sector)落在读写磁头正上方的之后才能开始读取数据,在这个等待盘片旋转到可操作扇区的过程中消耗的时间称为旋转延时(Rotational Delay);

  3. 接下来就随着盘片的旋转,磁头不断的读/写相应的数据块,直到完成这次IO所需要操作的全部数据,这个过程称为数据传送(Data Transfer),对应的时间称为传送时间(Transfer Time)。完成这三个步骤之后一次IO操作也就完成了。

寻址时间:考虑到被读写的数据可能在磁盘的任意一个磁道,既有可能在磁盘的最内圈(寻址时间最短),也可能在磁盘的最外圈(寻址时间最长),所以在计算中我们只考虑平均寻址时间,也就是磁盘参数中标明的那个平均寻址时间,这里就采用当前最多的10k rpm 硬盘的5ms。

旋转延时:和寻址一样,当磁头定位到磁道之后有可能正好在要读写扇区之上,这时候是不需要额外额延时就可以立刻读写到数据,但是最坏的情况确实要磁盘旋转整整一圈之后磁头才能读取到数据,所以这里我们也考虑的是平均旋转延时,对于10krpm的磁盘就是(60s/10k)*(1/2) = 2ms。

传送时间:磁盘参数提供我们的最大的传输速度,当然要达到这种速度是很有难度的,但是这个速度却是磁盘纯读写磁盘的速度,因此只要给定了单次 IO的大小,我们就知道磁盘需要花费多少时间在数据传送上,这个时间就是IO Chunk Size / Max Transfer Rate。

随机读写频繁的应用,如小文件存储(图片)、OLTP数据库、邮件服务器,关注随机读写性能,IOPS是关键衡量指标。

顺序读写频繁的应用,传输大量连续数据,如电视台的视频编辑,视频点播VOD(Video On Demand),关注连续读写性能。数据吞吐量是关键衡量指标。

IOPS和数据吞吐量适用于不同的场合:

  • 读取10000个1KB文件,用时10秒 Throught(吞吐量)=1MB/s ,IOPS=1000 追求IOPS。

  • 读取1个10MB文件,用时0.2秒 Throught(吞吐量)=50MB/s, IOPS=5 追求吞吐量。

个人理解:

如果要测试 IOPS 就需要定义小的 I/O size,如果要测试 吞吐量 则需要定义稍大的 I/O size,主要还是根据读写磁盘数据的大小而定。

常见磁盘平均物理寻道时间为:

7200转/分的STAT硬盘平均物理寻道时间是9ms``10000转/分的STAT硬盘平均物理寻道时间是6ms``15000转/
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值