一、磁盤性能指標(biāo)(IOPS)轉(zhuǎn)
1、IOPS 的基礎(chǔ)知識(shí):
IOPS (Input/Output Per Second)即每秒的輸入輸出量(或讀寫次數(shù)),是衡量磁盤性能的主要指標(biāo)之一。IOPS是指單位時(shí)間內(nèi)系統(tǒng)能處理的I/O請(qǐng)求數(shù)量,一般以每秒處理的I/O請(qǐng)求數(shù)量為單位,I/O請(qǐng)求通常為讀或?qū)憯?shù)據(jù)操作請(qǐng)求。
隨機(jī)讀寫--IOPS,順序讀寫--吞吐量
1、隨機(jī)讀寫頻繁的應(yīng)用,如小文件存儲(chǔ)(圖片)、OLTP數(shù)據(jù)庫、郵件服務(wù)器,關(guān)注隨機(jī)讀寫性能,IOPS是關(guān)鍵衡量指標(biāo)。 2、順序讀寫頻繁的應(yīng)用,傳輸大量連續(xù)數(shù)據(jù),如電視臺(tái)的視頻編輯,視頻點(diǎn)播VOD(Video On Demand),關(guān)注連續(xù)讀寫性能。數(shù)據(jù)吞吐量是關(guān)鍵衡量指標(biāo)。
IOPS和數(shù)據(jù)吞吐量適用于不同的場(chǎng)合,例如:讀取10000個(gè)1KB文件,用時(shí)10秒 Throught(吞吐量)=1MB/s ,IOPS=1000,追求IOPS;讀取1個(gè)10MB文件,用時(shí)0.2秒 Throught(吞吐量)=50MB/s, IOPS=5,追求吞吐量。
2、IOPS的計(jì)算方法
磁盤的隨機(jī)IO服務(wù)時(shí)間:服務(wù)時(shí)間 = 尋道時(shí)間 + 旋轉(zhuǎn)時(shí)間 + 傳輸時(shí)間。
磁盤是機(jī)械裝置,如FC, SAS, SATA磁盤,轉(zhuǎn)速通常為5400/7200/10K/15K rpm不等。影響磁盤的關(guān)鍵因素是磁盤服務(wù)時(shí)間,即磁盤完成一個(gè)I/O請(qǐng)求所花費(fèi)的時(shí)間,它由尋道時(shí)間、旋轉(zhuǎn)延遲和數(shù)據(jù)傳輸時(shí)間三部分構(gòu)成。
尋道時(shí)間 Tseek是指將讀寫磁頭移動(dòng)至正確的磁道上所需要的時(shí)間。尋道時(shí)間越短,I/O操作越快,目前磁盤的平均尋道時(shí)間一般在3-15ms。
旋轉(zhuǎn)延遲 Trotation是指盤片旋轉(zhuǎn)將請(qǐng)求數(shù)據(jù)所在扇區(qū)移至讀寫磁頭下方所需要的時(shí)間。旋轉(zhuǎn)延遲取決于磁盤轉(zhuǎn)速,通常使用磁盤旋轉(zhuǎn)一周所需時(shí)間的1/2表示。比如,7200 rpm的磁盤平均旋轉(zhuǎn)延遲大約為60*1000/7200/2 = 4.17ms,而轉(zhuǎn)速為15000 rpm的磁盤其平均旋轉(zhuǎn)延遲為2ms。
數(shù)據(jù)傳輸時(shí)間 Ttransfer是指完成傳輸所請(qǐng)求的數(shù)據(jù)所需要的時(shí)間,它取決于數(shù)據(jù)傳輸率,其值等于數(shù)據(jù)大小除以數(shù)據(jù)傳輸率。目前IDE/ATA能達(dá)到133MB/s,SATA II可達(dá)到300MB/s的接口數(shù)據(jù)傳輸率,數(shù)據(jù)傳輸時(shí)間通常遠(yuǎn)小于前兩部分消耗時(shí)間。
常見磁盤平均物理尋道時(shí)間為:
7200轉(zhuǎn)/分的STAT硬盤平均物理尋道時(shí)間是9ms;
10000轉(zhuǎn)/分的STAT硬盤平均物理尋道時(shí)間是6ms;
15000轉(zhuǎn)/分的SAS硬盤平均物理尋道時(shí)間是4ms。
常見硬盤的旋轉(zhuǎn)延遲時(shí)間為:
7200 rpm的磁盤平均旋轉(zhuǎn)延遲大約為60*1000/7200/2 = 4.17ms;
10000 rpm的磁盤平均旋轉(zhuǎn)延遲大約為60*1000/10000/2 = 3ms;
15000 rpm的磁盤其平均旋轉(zhuǎn)延遲約為60*1000/15000/2 = 2ms。
最大IOPS的理論計(jì)算方法:
IOPS = 1000 ms/ (尋道時(shí)間 + 旋轉(zhuǎn)延遲)。可以忽略數(shù)據(jù)傳輸時(shí)間。
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。
測(cè)量中,IOPS數(shù)值會(huì)受到很多因素的影響,包括I/O負(fù)載特征(讀寫比例,順序和隨機(jī),工作線程數(shù),隊(duì)列深度,數(shù)據(jù)記錄大小)、系統(tǒng)配置、操作系統(tǒng)、磁盤驅(qū)動(dòng)等等。因此對(duì)比測(cè)量磁盤IOPS時(shí),必須在同樣的測(cè)試基準(zhǔn)下進(jìn)行,即便如此也會(huì)產(chǎn)生一定的隨機(jī)不確定性。
二、存儲(chǔ)系統(tǒng)模型
塊存儲(chǔ)系統(tǒng)本質(zhì)是一個(gè)排隊(duì)模型,我們可以拿銀行作為比喻。
銀行辦事流程:去前臺(tái)取單號(hào)--等待排在你之前的人辦完業(yè)務(wù)--輪到你去某個(gè)柜臺(tái)--柜臺(tái)職員幫你辦完手續(xù)1--柜臺(tái)職員幫你辦完手續(xù)2--柜臺(tái)職員幫你辦完手續(xù)3--辦完業(yè)務(wù),從柜臺(tái)離開。
銀行的效率:服務(wù)時(shí)間 = 手續(xù)1 + 手續(xù)2 + 手續(xù)3;響應(yīng)時(shí)間 = 服務(wù)時(shí)間 + 等待時(shí)間;性能 = 單位時(shí)間內(nèi)處理業(yè)務(wù)數(shù)量。
銀行提高效率:增加柜臺(tái)數(shù)、降低服務(wù)時(shí)間。同理,排隊(duì)系統(tǒng)或存儲(chǔ)系統(tǒng)的優(yōu)化方法是:增加并行度、降低服務(wù)時(shí)間。
每個(gè)硬盤都有一個(gè)磁頭(相當(dāng)于銀行的柜臺(tái)),硬盤的工作方式是:收到IO請(qǐng)求,得到地址和數(shù)據(jù)大小--移動(dòng)磁頭(尋址)--找到相應(yīng)的磁道(尋址)--讀取數(shù)據(jù)--傳輸數(shù)據(jù)。磁盤的隨機(jī)IO服務(wù)時(shí)間:服務(wù)時(shí)間 = 尋道時(shí)間 + 旋轉(zhuǎn)時(shí)間 + 傳輸時(shí)間。
對(duì)于10000轉(zhuǎn)速的SATA硬盤來說,一般尋道時(shí)間是7 ms,旋轉(zhuǎn)時(shí)間是3 ms, 64KB的傳輸時(shí)間是 0.8 ms, 則SATA硬盤每秒可以進(jìn)行隨機(jī)IO操作是 1000/(7 + 3 + 0.8) = 93,所以我們估算SATA硬盤64KB隨機(jī)寫的IOPS是93。一般的硬盤廠商都會(huì)標(biāo)明順序讀寫的MBPS。
我們?cè)诹谐鯥OPS時(shí),需要說明IO大小,尋址空間,讀寫模式,順序/隨機(jī),隊(duì)列深度。我們一般常用的IO大小是4KB,這是因?yàn)槲募到y(tǒng)常用的塊大小是4KB。