依旧是自己不甚清楚的一个概念,希望通过自己的整理来加深印象,也希望这篇介绍能帮助 到其他人。

概念

IOPS,即Input/Output Operations Per Second,每秒钟执行IO请求的次数,一般即指读写 数据操作,是衡量存储性能的主要指标之一。Throughput(吞吐量)表示的是每秒数据的传输总量,是另一个主要指标。 二者关注点不同,对于小I/O,且传输I/O数量比较大的情况下,以IOPS衡量为宜,比如 OLTP(On-Line Transcation Processing)系统、小文件存储、邮件服务器等。而对于经常传输 大量连续数据的系统,以吞吐量衡量为宜,比如视频点播、视频编辑等。

IO时间

机械磁盘

机械磁盘完成一次I/O请求所花费的时间由寻道时间、旋转延迟 和数据传输时间三部分构成:

  1. 寻道时间

    将读写磁头移动至正确的磁道上所需的时间。目前磁盘的平均寻道时间一般在3-15ms.

  2. 旋转延迟

    盘片旋转将请求数据所在扇区移至读写磁头下方所需时间。旋转延迟取决于磁盘转速, 通常使用磁盘旋转一周所需时间的1/2表示。比如7200 rpm (每分钟7200转)的磁盘,其平 均旋转延迟约为 60*1000/7200/2 = 4.17ms

  3. 传输时间

    完成传输所请求的数据所需要的时间,它取决于数据传输率,其值等于数据大小除以数 据传输率。目前IDE/ATA能达到133MB/s,SATA II可达到300MB/s的接口数据传输率,数 据传输时间通常远小于前两部分。

因此,如果忽略数据传输时间,就可以计算出机械磁盘的最大IOPS.假设磁盘平均物理寻道时间 为3ms, 磁盘转速为7200,10K,15K rpm,则磁盘IOPS理论最大值分别为:

 IOPS = 1000 / (3 + 60000/7200/2)  = 140
 IOPS = 1000 / (3 + 60000/10000/2) = 167
 IOPS = 1000 / (3 + 60000/15000/2) = 200

固态硬盘

固态硬盘SSD是一种电子装置, 避免了传统磁盘在寻道和旋转上的时间花费,存储单元寻址 开销大大降低,因此IOPS可以非常高,能够达到数万甚至数十万。

指标

实际测量中,IOPS数值会受到很多因素的影响,包括I/O负载特征(读写比例,顺序和随机, 工作线程数,队列深度,数据记录大小)、系统配置、操作系统、磁盘驱动等等。因此对比 测量磁盘IOPS时,必须在同样的测试基准下进行,即便如何也会产生一定的随机不确定性。 通常情况下,IOPS可细分为如下几个指标:

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

  2. Random Read IOPS,100%随机读负载情况下的IOPS.

  3. Random Write IOPS,100%随机写负载情况下的IOPS。

  4. Sequential Read IOPS,100%顺序负载读情况下的IOPS。

  5. Sequential Write IOPS,100%顺序写负载情况下的IOPS。

对于HDDs和类似的机械存储设备,random IOPS的时间主要取决于寻道时间,但是对于SSD 或类似的固态存储设备,则主要取决于存储设备内部的控制器以及memeory interface speeds. 在两种设备上,Sequential IOPS(尤其是使用大的数据块的时候)一般都指示了存储设备 的最大带宽:

	IOPS * TransferSizeInBytes = BytesPerSec

参考链接

  1. 论存储IOPS和Throughput吞吐量之间的关系
  2. 数据库应用类型:OLTP与OLAP的比较
  3. 磁盘IOPS计算与测量
  4. 固态硬盘
  5. 磁盘性能指标–IOPS 理论
  6. 探究SSD固态硬盘性能下降谜题
  7. 队列深度对硬盘性能的影响