磁盤的IOPS計(jì)算與測(cè)量
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ī)讀寫頻繁的應(yīng)用,如OLTP,IOPS是關(guān)鍵衡量指標(biāo)。
數(shù)據(jù)吞吐量(Throughput),指單位時(shí)間內(nèi)可以成功傳輸?shù)臄?shù)據(jù)數(shù)量。對(duì)于大量順序讀寫的應(yīng)用,如VOD(Video On Demand),則更關(guān)注吞吐量指標(biāo)。
磁盤完成一個(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í)間。
因此,理論上可以計(jì)算出磁盤的平均最大IOPS,即IOPS = 1000 ms/ (Tseek + Troatation),忽略數(shù)據(jù)傳輸時(shí)間。假設(shè)磁盤平均物理尋道時(shí)間為3ms, 磁盤轉(zhuǎn)速為7200,10K,15K rpm,則磁盤IOPS理論最大值分別為,
IOPS = 1000 / (3 + 60000/7200/2) = 140
IOPS = 1000 / (3 + 60000/10000/2) = 167
IOPS = 1000 / (3 + 60000/15000/2) = 200
固態(tài)硬盤SSD是一種電子裝置, 避免了傳統(tǒng)磁盤在尋道和旋轉(zhuǎn)上的時(shí)間花費(fèi),存儲(chǔ)單元尋址開銷大大降低,因此IOPS可以非常高,能夠達(dá)到數(shù)萬(wàn)甚至數(shù)十萬(wàn)。實(shí)際測(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ī)不確定性。通常情況下,IOPS可細(xì)分為如下幾個(gè)指標(biāo):
Toatal IOPS,混合讀寫和順序隨機(jī)I/O負(fù)載情況下的磁盤IOPS,這個(gè)與實(shí)際I/O情況最為相符,大多數(shù)應(yīng)用關(guān)注此指標(biāo)。
Random Read IOPS,100%隨機(jī)讀負(fù)載情況下的IOPS。
Random Write IOPS,100%隨機(jī)寫負(fù)載情況下的IOPS。
Sequential Read IOPS,100%順序負(fù)載讀情況下的IOPS。
Sequential Write IOPS,100%順序?qū)懾?fù)載情況下的IOPS。
IOPS的測(cè)試benchmark工具主要有Iometer, IoZone, FIO等,可以綜合用于測(cè)試磁盤在不同情形下的IOPS。對(duì)于應(yīng)用系統(tǒng),需要首先確定數(shù)據(jù)的負(fù)載特征,然后選擇合理的IOPS指標(biāo)進(jìn)行測(cè)量和對(duì)比分析,據(jù)此選擇合適的存儲(chǔ)介質(zhì)和軟件系統(tǒng)。
關(guān)于磁盤IOPS數(shù)據(jù)可以參考http://en.wikipedia.org/wiki/IOPS。