Hang

IOPS 介绍

2015-02-04

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

概念#

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. 队列深度对硬盘性能的影响
Tags: 技术