1. 程式人生 > 其它 >硬碟IO效能估算入門

硬碟IO效能估算入門

一、硬碟IO的型別
IO是輸入輸出指令,作業系統向儲存控制器下發一個讀或者寫資料的操作指令,控制器下發地址和資料給儲存裝置,並返回結果給儲存控制器,最後到達作業系統。作業系統的一個IO可能會產生多個實際的儲存裝置IO。一般可以分為:

1、連續Sequential IO、隨機Random IO
如果本次IO給出的初始地址和上次IO的結束地址是連續或者接近的,磁頭可以很快訪問到資料,這樣的多個IO就是連續IO。如果前後兩次IO操作的地址相差比較大,磁頭需要較長距離的移動,就是隨機IO。在做連續 IO的時候,磁頭幾乎不換道連線工作,可以快速讀取和寫入大量資料。

2、順序Queue IO、併發Burst IO
如果儲存裝置每次只執行一個IO指令,就是順序IO;當儲存裝置能同時執行多個IO命令時,控制器傳送IO指令後不等迴應就繼續下發IO指令,稱為併發IO。普通磁碟一次只能響應一個IO指令,但RAID等儲存裝置的IO操作是併發的。對順序IO的裝置,調整IO佇列深度,效能不能產生變化。

二、硬碟效能衡量
衡量硬碟效能,最直觀的就是IOPS和吞吐量。

1、IOPS,每秒處理的IO次數
指儲存裝置(HDD、SSD、SAN)單位時間內能處理的IO請求數量,對隨機讀寫頻繁的應用,如OLTP資料庫、圖片、資訊,是最關鍵的衡量指標。IOPS數值受讀寫比例、隨機IO、IO大小、佇列深度等因數影響。資料庫通常訪問一系列不連續的資料,根據檔案物理位置,需要很多次IO才能完成。所以需要隨機IO高的裝置。

2、Throughput,吞吐量
指單位時間內可以成功傳輸的資料數量,傳輸包括讀和寫的總和。對於大檔案或者流媒體的應用,擁有大量順序讀寫,則更關注資料吞吐量。資料吞吐量還受到儲存裝置介面速度限制,比如IDE、SATA、SAS、FC,SSD使用PCIE Nvme介面最佳,但同時期推出的介面都大於儲存裝置吞吐量上限。

三、硬碟監控指標
通過iostat等工具觀察儲存裝置狀況,我們一般關注下面指標。

1、r/s、w/s,每秒讀寫IO次數。
IOPS = r/s + w/s。讀和寫的能力,在不同裝置中實際是有差異的,但是我們經常簡化差異,混合稱為IOPS。

2、avgrq-sz,每次IO請求的平均大小
如果平均小於32K認為隨機存取為主,大於32K則是順序儲存為主。

3、avgqu-sz,等待執行的IO佇列長度
 IO請求數超出儲存裝置處理能力,待執行佇列就會加長,該值應該小於2.

4、await,等待執行的IO耗時
 等待耗時取決svctm以及IO佇列長度,該值應該接近svctm。

5、 svctm,IO服務時間
處理IO請求的耗時,比如機械硬碟耗時,由尋道時間、旋轉延遲和傳輸時間組成。

6、uitl,儲存裝置IO利用率
儲存裝置的資源利用情況,佇列爭用程度成越高值越大。

四、儲存效能
1、機械硬碟的效能計算
對機械硬碟來說,IOPS = 1000 / (尋道時間 + 旋轉延時 + 傳輸時間)。
a、尋道時間,磁頭移動到對應磁軌上的耗時。
Sata 7200RPM,平均尋道時間是9ms。
Sas 10000RPM,平均尋道時間是6ms。
Sas 15000RPM,平均尋道時間是4ms。
 b、旋轉延時,碟片旋轉至需要的扇區移至磁頭下方耗時。
平均為磁碟旋轉一週所需時間的一半,60 * 1000/7200/2。
Sata 7200RPM,旋轉延時 60 * 1000 / 7200 / 2 = 4.17ms。
Sas 10000RPM,旋轉延時3ms。
Sas 15000RPM,旋轉延時約2ms。
c、傳輸時間,傳輸讀寫資料耗時。
平均資料大小除以介面傳輸率,耗時很小粗略計算可以忽略。
Sata,300~600MB/s。
Sas,3Gbit/s。
FC,2~4Gbit/s。
NVME,32Gbit/s。
根據上述資訊,我們常用的Sas 15000RPM,MySQL應用16k塊,機械硬碟IOPS = 1000 / (4 + 2 + 16K / 375K) = 165。

  1. SSD硬碟IO計算
    固態硬碟沒有尋道時間和旋轉時間。IO耗時是通過地址查詢資料耗時,根據晶片顆粒SLC、MLC,中控晶片、佇列深度32~64、介面Sata、PCIE的不同,一般負載非太高時是相對固定值(控制在60%利用率)。
    IOPS = 1000 / IO耗時。因為SSD比較固定,比如Intel 320 SSD對8K avgrq-sz耗時0.1ms,1000/0.1ms=10000 IOPS。具體參考後續文章。

3、iops估算raid盤數
a、如果單盤不能滿足效能需求,需要通過Raid實現,計算所需硬碟數公式如下。
Raid1、10,Drive IOPS = Read IOPS + 2Write IOPS
Raid3、5,Drive IOPS = Read IOPS + 4
Write IOPS
Raid6,Drive IOPS = Read IOPS + 6*Write IOPS
b、設需要IOPS 5000,讀寫比例2:1,則RAID10後IOPS需求為。
RAID10,(2/3) * 5000 + 2 * (1/3) * 5000 = 6666 IOPS
c、已知Sas 15000RPM機械硬碟IOPS165。
5000IOPS所需硬碟個數, 6666 / 165 = 40。

4、常見儲存裝置參考性能,avgrq-sz 8~16K
5400 rpm SATA,60 IOPS
7200 rpm SATA,70 IOPS
10000 rpm SAS,110 IOPS
15000 rpm SAS,150 IOPS,Sequential RW 180MB/s、Radom RW 15MB/s。
10000 rpm FC,125 IOPS
15000 rpm FC,150 IOPS
SSD Sata,3000~40000 IOPS,R 400MB/s、W 250MB/s。
SSD PCIE,20000~40000 IOPS,R 500MB/s、W 300MB/s。
記憶體,1000000+ IOPS,30~60 GB/s。

[email protected]