近期項目中涉及和別人談存儲架構及選型,將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數據庫