天天看點

論存儲IOPS和Throughput吞吐量之間的關系介紹更多資訊

     IOPS和Throughput吞吐量兩個參數是衡量存儲性能的主要名額。IOPS表示存儲每秒傳輸IO的數量,Throughput吞吐量則表示每秒資料的傳輸總量。兩者在不同的情況下都能表示存儲的性能狀況,但應用的場景不盡相同。同時,兩者之間也存在着互相的聯系,本文就IOPS和Throughput吞吐量對存儲性能衡量的場景入手,描述兩者之間的變化關系與計算方法。幫助讀者更好的了解存儲的性能分析與規劃。

IOPS與Throughput的關系:

     IOPS(IO per Second)是用來計算I/O流中每個節點中每秒傳輸的數量(關于IO流中的每個節點的解釋,參考文章:   

     IOPS通常對于小I/O,且傳輸I/O的數量比較大的情況下,是一個最主要的衡量名額。例如,典型的OLTP系統中,高的IOPS則意味着資料庫的事務可以被存儲系統處理。

     Throughput吞吐量是用來計算每秒在I/O流中傳輸的資料總量。這個名額,在大多數的磁盤性能計算工具中都會顯示,最簡單的在Windows檔案拷貝的時候,就會顯示MB/s。通常情況下,Throughput吞吐量隻會計算I/O包中的資料部分,至于I/O標頭的資料則會被忽略在Throughput吞吐量的計算中。廣義上的Throughput吞吐量,也會被叫做“帶寬”,用來衡量I/O流中的傳輸通道,比如2/4/8Gbps Fibre Channel、60Mbps SCSI等等。但 “帶寬”會包括通道中所有資料的總傳輸量的最大值,而Throughput吞吐量則是隻保護傳輸的實際資料,兩者還是有些許差別。

     Throughput吞吐量衡量對于大I/O,特别是傳輸一定資料的時候最小化耗時非常有用。備份資料的時候是一個典型的例子。在備份作業中,我們通常不會關心有多少I/O被存儲系統處理了,而是完成備份總資料的時間多少。

     IOPS和Throughput吞吐量之間存在着線性的變化關系,而決定它們的變化的變量就是每個I/O的大小。從圖中可以看到,當被傳輸的I/O比較小的情況下,每個I/O所需傳輸的時間會比較少,機關時間内傳輸的I/O數量就多。

而由于處理資料標頭,總的時間内傳輸實際資料相對較低。

當I/O尺寸比較大的情況下,如下圖所示,傳輸每個I/O的時間增大,IOPS數量下降。但是相比更高的百分比的I/O通道用來傳輸實際資料,Throughput則明顯上升。

我們可以用一個簡單的公式來計算Throughput和IOPS之間的關系:

Throughput MB/s = IOPS * KB per IO / 1024

     假設一個10個10K SAS磁盤,每個磁盤提供140 IOPS,總共有1400最大IOPS。理論上這些磁盤處理不同的IO大小,所能達到的Throughput吞吐量是有差別的。簡單的來說,實體層面IOPS和Throughput哪個先達到了實體磁盤的極限,就決定了這個實體磁盤的性能閥值。下面的計算公式可以看到,機關I/O大小可以使得吞吐量成倍提升,但是未能達到10個SAS磁盤1GB/S(每個磁盤100MB/s帶寬)的理論“帶寬”。顯而易見,因為大多數應用的I/O不會那麼大,是以你會看到存儲陣列的吞吐量遠小于廠商提供的理論值,原因就是因為IOPS先達到了性能閥值,使得吞吐量無法再提升。當然也有特殊的應用,例如流媒體伺服器等,應用端可以使用2MB的I/O大小,那麼吞吐量使用率顯然會更加高,IOPS的要求則相對較低了。

MB/s = 1400 * 64 /1024 = 87.5 MB/s

MB/s = 1400 * 128 /1024 = 175 MB/s

MB/s = 1400 * 256 /1024 = 350 MB/s

     綜上所述,在規劃存儲性能和處理存儲性能問題的時候,需要綜合看IOPS和Throughput吞吐量這兩個參數,本文的觀點總結為以下幾點:

性能工具統計的Throughput吞吐量永遠達不到實際的I/O流中節點的理論“帶寬”,原因是性能工具不會統計I/O的標頭資訊,而是實際的資料傳輸量。

磁盤實體層面IOPS和Throughput哪個先達到了實體磁盤的極限,就決定了這個實體磁盤的性能閥值,然而決定哪個先達到性能閥值的就是I/O的大小。

性能監控工具顯示IOPS低或者Throughput低于預期,先不要直接認為存儲性能存在問題,搞清楚應用的I/O大小,再做後續判斷。

存儲性能另外一個重要因素還有磁盤響應時間(Response Time),本文的内容是建立在存儲可以提供接受通路内的響應時間為前提。