《IO 系统性能》笔记

近期项目中涉及和别人谈存储架构及选型,将IOPS相关的内容学习下。参考网上资料《IO 系统性能之一:衡量性能的几个指标》

1. 基本概念
  1)读写IO操作:对应磁盘的存数据、取数据;
  2)单个IO操作:操作系统 <- IO指令-> 控制器 <-指令+数据块-> 硬盘
  3)随机访问:两次IO操作的扇区地址差距比较大;
  4)连续访问:多次IO操作的扇区地址比较接近;
  5)顺序IO/并发IO:磁盘组能够接受并执行来自控制器的多个IO操作;

2. 单个IO的大小(IO Chunk Size)
  1)数据库读写(包括Orale之block、Sql server之page)默认基本块为8KB;
  2)操作系统提供文件系统缓存,即将多个IO操作缓存后一次性提交给磁盘;
  3)存储系统可能也提供缓存,即将多个来自操作系统的IO指令合并执行;

3. IOPS(IO per Second)
  1)IO 系统每秒执行IO操作的次数;
  2)IO Time:
  假设:磁盘转速 15K RPM、平均寻道时间 5ms、最大传输速率 40MB/s
  基本概念:
    寻址时间:控制器对磁盘发出指令后,磁盘控制臂将磁头移植待读写数据的磁道正上方; -> 5ms
    旋转延时:等待盘片将待读扇区移到磁头正上方;-> (60S/15K)/2 = 2ms 最好情况 + 最坏情况/2
    传送时间:磁盘转动,磁头读入本次IO的全部数据;IO chunk Size/Max transfer rate 如4K/40M
    IO Time = 寻址时间 + 旋转延时 + 传送时间 -> IOPS = 1/IO Time

4. 传输速度(Transfer Rate)/吞吐率(Througput)
  实际过程中会使用IOPS衡量小IO操作系统,而对大IO操作系统用传输速度;
  由上述公式可知,当系统经常属于连续操作时IOPS也无参考价值;

5. IO响应时间
  IO 响应时间:从操作系统发出一个IO指令 到 操作系统收到一个IO反馈为止;此时等于要在IO Chunk Size的基础上增加在内核队列中的时间;

6. 磁盘阵列的两大瓶颈 IOPS 和 吞吐量
  6.1 吞吐量
    取决与磁阵的架构,如下:
    光纤通道:2G的FC卡 -> 2G/8 = 250M/s的实际流量
    硬盘:120块15KRPM的硬盘,支撑的数据流量 = 120*13M/s = 1560Mb/s

6.2 IOPS
    取决于IOPS的主要包括磁阵的算法、cache命中率、磁盘个数
    例:业务IOPS 10000、读cache命中率30%、读IOPS 60%、写IOPS 40%、磁盘个数为120个
    RAID 5:
    单块盘:IOPS = (10000*0.7*0.6 + 4*10000*0.4)/120 = 168; //raid5中写操作需要4个IO
    备注:15k rpm的硬盘支持IOPS为150

原文地址:https://www.cnblogs.com/Fredric-2013/p/3804035.html