在我们看硬盘厂商的宣传单的时候我们经常能看到3个参数 , 分别是平均寻址时间、盘片旋转速度以及更大传送速度 , 这三个参数就可以提供给我们计算上述三个步骤的时间 。
之一个寻址时间 , 考虑到被读写的数据可能在磁盘的任意一个磁道 , 极有可能在磁盘的最内圈(寻址时间最短) , 也可能在磁盘的最外圈(寻址时间最长) , 所以在计算中我们只考虑平均寻址时间 , 也就是磁盘参数中标明的那个平均寻址时间 , 这里就采用当前最多的10krmp硬盘的5ms 。
第二个旋转延时 , 和寻址一样 , 当磁头定位到磁道之后有可能正好在要读写扇区之上 , 这时候是不需要额外额延时就可以立刻读写到数据 , 但是最坏的情况确实要磁盘旋转整整一圈之后磁头才能读取到数据 , 所以这里我们也考虑的是平均旋转延时 , 对于10krpm的磁盘就是(60s/10k)*(1/2) = 2ms 。
第三个传送时间 , 磁盘参数提供我们的更大的传输速度 , 当然要达到这种速度是很有难度的 , 但是这个速度却是磁盘纯读写磁盘的速度 , 因此只要给定了单次 IO的大小 , 我们就知道磁盘需要花费多少时间在数据传送上 , 这个时间就是IO Chunk Size / Max Transfer Rate 。
现在我们就可以得出这样的计算单次IO时间的公式 。
IO Time = Seek Time + 60 sec/Rotational Speed/2 + IO Chunk Size/Transfer Rate
于是我们可以这样计算出IOPS 。
IOPS = 1/IO Time = 1/(Seek Time + 60 sec/Rotational Speed/2 + IO Chunk Size/Transfer Rate)
对于给定不同的IO大小我们可以得出下面的一系列的数据
4K (1/7.1 ms = 140 IOPS)5ms + (60sec/15000RPM/2) + 4K/40MB = 5 + 2 + 0.1 = 7.18k (1/7.2 ms = 139 IOPS)5ms + (60sec/15000RPM/2) + 8K/40MB = 5 + 2 + 0.2 = 7.216K (1/7.4 ms = 135 IOPS)5ms + (60sec/15000RPM/2) + 16K/40MB = 5 + 2 + 0.4 = 7.432K (1/7.8 ms = 128 IOPS)5ms + (60sec/15000RPM/2) + 32K/40MB = 5 + 2 + 0.8 = 7.864K (1/8.6 ms = 116 IOPS)5ms + (60sec/15000RPM/2) + 64K/40MB = 5 + 2 + 1.6 = 8.6
从上面的数据可以看出 , 当单次IO越小的时候 , 单次IO所耗费的时间也越少 , 相应的IOPS也就越大 。
上面我们的数据都是在一个比较理想的假设下得出来的 , 这里的理想的情况就是磁盘要花费平均大小的寻址时间和平均的旋转延时 , 这个假设其实是比较符合我们实际情况中的随机读写 , 在随机读写中 , 每次IO操作的寻址时间和旋转延时都不能忽略不计 , 有了这两个时间的存在也就限制了IOPS的大小 。现在我们考虑一种相对极端的顺序读写操作 , 比如说在读取一个很大的存储连续分布在磁盘的的文件 , 因为文件的存储的分布是连续的 , 磁头在完成一个读IO操作之后 , 不需要从新的寻址 , 也不需要旋转延时 , 在这种情况下我们能到一个很大的IOPS值 , 如下 。
4K (1/0.1 ms = 10000 IOPS)0ms + 0ms + 4K/40MB = 0.18k (1/0.2 ms = 5000 IOPS)0ms + 0ms + 8K/40MB = 0.216K (1/0.4 ms = 2500 IOPS)0ms + 0ms + 16K/40MB = 0.432K (1/0.8 ms = 1250 IOPS)0ms + 0ms + 32K/40MB = 0.864K (1/1.6 ms = 625 IOPS)0ms + 0ms + 64K/40MB = 1.6
相比之一组数据来说差距是非常的大的 , 因此当我们要用IOPS来衡量一个IO系统的系能的时候我们一定要说清楚是在什么情况的IOPS , 也就是要说明读写的方式以及单次IO的大小 , 当然在实际当中 , 特别是在OLTP的系统的 , 随机的小IO的读写是最有说服力的 。
另外 , 对于同一个磁盘(或者 LUN) , 随着每次 I/O 读写数据的大小不通 , IOPS 的数值也不是固定不变的 。例如 , 每次 I/O 写入或者读出的都是连续的大数据块 , 此时 IOPS 相对会低一些;在不频繁换道的情况下 , 每次写入或者读出的数据块小 , 相对来讲 IOPS 就会高一些 。也就是说 , IOPS 也取决与I/O块的大小 , 采用不同I/O块的大小测出的IOPS值是不同的 。对一个具体的IOPS, 可以了解它当时测试的I/O块的尺寸 。并且IOPS都具有极限值 , 表1列出了各种磁盘的 IOPS 极限值 。表 1. 常见磁盘类型及其 IOPS
文章插图
文章插图
三、I/O 读写的类型大体上讲 , I/O 的类型可以分为:读 / 写 I/O、大 / 小块 I/O、连续 / 随机 I/O, 顺序 / 并发 I/O 。在这几种类型中 , 我们主要讨论一下:大 / 小块 I/O、连续 / 随机 I/O, 顺序 / 并发 I/O 。
推荐阅读
- 2019年出生的人属什么生肖,五行八字查询
- 2020年10月18号九月初二出生的孩子生辰八字和性格命运解析
- 属兔的一生运气和命运 有后福晚年锦衣玉食
- 一弦一柱思华年的故事 一弦一柱思华年
- 2020年11月16号十月初二出生的孩子生辰八字和性格命运解析
- 没钱最穷的生肖女 属鸡属羊属马
- 属狗的一生有几次婚姻 中年二婚遇见意中人
- 摩羯座女的魅力是什么
- 礼部侍郎几品 礼部侍郎
- 属龙的一生运势和命运不错 实现人生最高目标