您好,登錄后才能下訂單哦!
https://en.wikipedia.org/wiki/IOPS
機械硬盤的連續讀寫性很好, 但隨機讀寫性能很差。這是因為磁頭移動至正確的磁道上需要時間,隨機讀寫時,磁頭不停的移動,時間都花在了磁頭尋道上,所以性能不高。 如下圖:
在存儲小文件(圖片)、OLTP數據庫應用時,隨機讀寫性能(IOPS)是最重要指標。
學習它,有助于我們分析存儲系統的性能互瓶頸。
下面我們來認識隨機讀寫性能指標--IOPS(每秒的輸入輸出次數)。
磁盤性能指標--IOPS
----------------------------------------------------------
IOPS (Input/Output Per Second)即每秒的輸入輸出量(或讀寫次數),是衡量磁盤性能的主要指標之一。IOPS是指單位時間內系統能處理的I/O請求數量,一般以每秒處理的I/O請求數量為單位,I/O請求通常為讀或寫數據操作請求。
隨機讀寫頻繁的應用,如小文件存儲(圖片)、OLTP數據庫、郵件服務器,關注隨機讀寫性能,IOPS是關鍵衡量指標。
順序讀寫頻繁的應用,傳輸大量連續數據,如電視臺的視頻編輯,視頻點播VOD(Video On Demand),關注連續讀寫性能。數據吞吐量是關鍵衡量指標。
IOPS和數據吞吐量適用于不同的場合:
讀取10000個1KB文件,用時10秒 Throught(吞吐量)=1MB/s ,IOPS=1000 追求IOPS
讀取1個10MB文件,用時0.2秒 Throught(吞吐量)=50MB/s, IOPS=5 追求吞吐量
磁盤服務時間
--------------------------------------
傳統磁盤本質上一種機械裝置,如FC, SAS, SATA磁盤,轉速通常為5400/7200/10K/15K rpm不等。影響磁盤的關鍵因素是磁盤服務時間,即磁盤完成一個I/O請求所花費的時間,它由尋道時間、旋轉延遲和數據傳輸時間三部分構成。
尋道時間 Tseek是指將讀寫磁頭移動至正確的磁道上所需要的時間。尋道時間越短,I/O操作越快,目前磁盤的平均尋道時間一般在3-15ms。
旋轉延遲 Trotation是指盤片旋轉將請求數據所在扇區移至讀寫磁頭下方所需要的時間。旋轉延遲取決于磁盤轉速,通常使用磁盤旋轉一周所需時間的1/2表示。比如,7200 rpm的磁盤平均旋轉延遲大約為60*1000/7200/2 = 4.17ms,而轉速為15000 rpm的磁盤其平均旋轉延遲為2ms。
數據傳輸時間 Ttransfer是指完成傳輸所請求的數據所需要的時間,它取決于數據傳輸率,其值等于數據大小除以數據傳輸率。目前IDE/ATA能達到133MB/s,SATA II可達到300MB/s的接口數據傳輸率,數據傳輸時間通常遠小于前兩部分消耗時間。簡單計算時可忽略。
常見磁盤平均物理尋道時間為:
7200轉/分的STAT硬盤平均物理尋道時間是9ms
10000轉/分的STAT硬盤平均物理尋道時間是6ms
15000轉/分的SAS硬盤平均物理尋道時間是4ms
常見硬盤的旋轉延遲時間為:
7200 rpm的磁盤平均旋轉延遲大約為60*1000/7200/2 = 4.17ms
10000 rpm的磁盤平均旋轉延遲大約為60*1000/10000/2 = 3ms,
15000 rpm的磁盤其平均旋轉延遲約為60*1000/15000/2 = 2ms。
最大IOPS的理論計算方法
--------------------------------------
IOPS = 1000 ms/ (尋道時間 + 旋轉延遲)。可以忽略數據傳輸時間。
7200 rpm的磁盤 IOPS = 1000 / (9 + 4.17) = 76 IOPS
10000 rpm的磁盤IOPS = 1000 / (6+ 3) = 111 IOPS
15000 rpm的磁盤IOPS = 1000 / (4 + 2) = 166 IOPS
影響測試的因素
-----------------------------------------
實際測量中,IOPS數值會受到很多因素的影響,包括I/O負載特征(讀寫比例,順序和隨機,工作線程數,隊列深度,數據記錄大小)、系統配置、操作系統、磁盤驅動等等。因此對比測量磁盤IOPS時,必須在同樣的測試基準下進行,即便如此也會產生一定的隨機不確定性。
隊列深度說明
NCQ、SCSI TCQ、PATA TCQ和SATA TCQ技術解析
----------------------------------------
是一種命令排序技術,一把喂給設備更多的IO請求,讓電梯算法和設備有機會來安排合并以及內部并行處理,提高總體效率。
SCSI TCQ的隊列深度支持256級
ATA TCQ的隊列深度支持32級 (需要8M以上的緩存)
NCQ最高可以支持命令深度級數為32級,NCQ可以最多對32個命令指令進行排序。
大多數的軟件都是屬于同步I/O軟件,也就是說程序的一次I/O要等到上次I/O操作的完成后才進行,這樣在硬盤中同時可能僅只有一個命令,也是無法發揮這個技術的優勢,這時隊列深度為1。
隨著Intel的超線程技術的普及和應用環境的多任務化,以及異步I/O軟件的大量涌現。這項技術可以被應用到了,實際隊列深度的增加代表著性能的提高。
在測試時,隊列深度為1是主要指標,大多數時候都參考1就可以。實際運行時隊列深度也一般不會超過4.
IOPS可細分為如下幾個指標:
-----------------------------------------
數據量為n字節,隊列深度為k時,隨機讀取的IOPS
數據量為n字節,隊列深度為k時,隨機寫入的IOPS
IOPS的測試benchmark工具
------------------------------------------
IOPS的測試benchmark工具主要有Iometer, IoZone, FIO等,可以綜合用于測試磁盤在不同情形下的IOPS。對于應用系統,需要首先確定數據的負載特征,然后選擇合理的IOPS指標進行測量和對比分析,據此選擇合適的存儲介質和軟件系統。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。