一些數(shù)碼大V在消費(fèi)類(lèi)SSD中也會(huì)使用IOmeter以體現(xiàn)其專(zhuān)業(yè)度。這種“專(zhuān)業(yè)”會(huì)包括兩方面:其一,IOmeter的界面比CystalDiskMark、TxBENCH、AS SSD等“快餐”測(cè)試軟件要復(fù)雜得多,會(huì)給人營(yíng)造艱深晦澀的感覺(jué)。
其二,IOmeter確實(shí)可以提供“快餐”軟件所缺乏的數(shù)據(jù),典型的成果包括諸如“萬(wàn)秒圖”之類(lèi)的。“萬(wàn)秒”意味著可以給SSD比較重的負(fù)荷,說(shuō)服力也會(huì)高很多。而工作負(fù)荷的輕重,不僅僅是高低檔消費(fèi)類(lèi)SSD的區(qū)別,也是數(shù)據(jù)中心SSD與消費(fèi)類(lèi)SSD的根本區(qū)別。
SSD工作負(fù)荷的輕重,主要體現(xiàn)在幾個(gè)方面:
?1、隊(duì)列深度
?2、混合讀寫(xiě)
?3、持續(xù)時(shí)間
這幾方面的內(nèi)容我們會(huì)在相關(guān)的測(cè)試項(xiàng)目中逐步展開(kāi)。同時(shí),我們先通過(guò)消費(fèi)者熟悉的快餐測(cè)試軟件幫助讀者理解測(cè)試項(xiàng)目的內(nèi)涵,并在此基礎(chǔ)上逐步過(guò)渡到IOmeter,再進(jìn)階到FIO的應(yīng)用。
?
?測(cè)試最基本的設(shè)置:數(shù)據(jù)包大小
?略有SSD測(cè)試常識(shí)的人都知道,需要考察幾種性能:順序讀、順序?qū)?、隨機(jī)讀、隨機(jī)寫(xiě)。
那么,順序和隨機(jī)的定義是什么?
先說(shuō)隨機(jī)?,F(xiàn)代操作系統(tǒng)的內(nèi)存和文件系統(tǒng)都是頁(yè)式管理,以4KB為單位?;诖疟P(pán)的512Byte扇區(qū)概念對(duì)SSD而言意義不大。因?yàn)镹AND Flash的基本存儲(chǔ)單元是頁(yè),容量一般為2KB或者4KB,這是最小的讀寫(xiě)單元。因此,綜合操作系統(tǒng)和NAND Flash的特點(diǎn),4KB的數(shù)據(jù)塊會(huì)被看做是最基本、最通用的操作單元,公認(rèn)用這個(gè)容量的數(shù)據(jù)包當(dāng)做“隨機(jī)”讀寫(xiě)的代表。
考慮到應(yīng)用或者SSD的特點(diǎn),在某些測(cè)試中8KB、16KB這樣的數(shù)據(jù)會(huì)更有實(shí)際意義。譬如Oracle數(shù)據(jù)庫(kù)的默認(rèn)塊大小是8KB,也可以被設(shè)為2KB~64KB不等。再譬如Solidigm D5-P5316、P5336等大容量SSD使用了64KB或者16KB大小的間接單元(IU,indirection unit),它們可以接受4KB的寫(xiě)入,但使用更大的數(shù)據(jù)單元會(huì)更有效率。使用這些軟硬件的用戶(hù)都會(huì)進(jìn)行針對(duì)性的優(yōu)化,對(duì)應(yīng)的,測(cè)試軟件在考察隨機(jī)性能時(shí)也應(yīng)該進(jìn)行相應(yīng)的設(shè)置。
剛才說(shuō)的是“隨機(jī)”讀寫(xiě)的尺度與“頁(yè)”相關(guān),那么,“順序”讀寫(xiě)的尺度就與塊相關(guān)了。若干NAND Flash的頁(yè)會(huì)組成一個(gè)塊,典型的是64個(gè)頁(yè)。常見(jiàn)的塊容量可能是128KB、256KB、512KB。NAND Flash的擦除是以塊為單位的。因此,128KB數(shù)據(jù)包的讀寫(xiě)可以看作是順序操作的最小單元,1到4個(gè)數(shù)據(jù)塊正好填滿(mǎn)一個(gè)塊。也有的測(cè)試會(huì)使用較大的單元,如IOmeter的預(yù)設(shè)是256KB,CrystalDiskMark預(yù)設(shè)了1MB等,這些數(shù)據(jù)包的容量可能更接近NAND Flash的實(shí)際塊容量。
以人們熟悉的CrystalDiskMark為例,左側(cè)的色塊是SEQ1M、SEQ128K、RND4K,代表的就是順序讀寫(xiě)(1MB數(shù)據(jù)包)、順序讀寫(xiě)(128KB數(shù)據(jù)包)、隨機(jī)讀寫(xiě)(4KB數(shù)據(jù)包)。
綜上,設(shè)置正確的數(shù)據(jù)包大小,就是考察SSD的隨機(jī)或順序讀寫(xiě)的性能。最普適的設(shè)置是4KB和128KB,酌情按照需要額外增加特定的數(shù)據(jù)包大小。
?對(duì)測(cè)試成績(jī)影響最大的設(shè)置:隊(duì)列深度
?要想在SSD測(cè)試中獲得理想的成績(jī),最值得留意的重點(diǎn)是設(shè)置適宜的隊(duì)列深度。
對(duì)于個(gè)人電腦,需要同時(shí)訪問(wèn)SSD的應(yīng)用程序并不多,主要就是前臺(tái)運(yùn)行的軟件(如游戲、圖形圖像軟件)會(huì)斷續(xù)讀寫(xiě)較大的文件,以及后臺(tái)運(yùn)行的通訊工具(包括電子郵箱、即時(shí)通訊工具)偶爾接收信息,持續(xù)時(shí)間較長(zhǎng)但吞吐量比較小的行為主要是后臺(tái)上傳下載一些文件或者系統(tǒng)更新等。整體而言,消費(fèi)類(lèi)SSD的工作隊(duì)列深度在1~4之間。
服務(wù)器面對(duì)的情況就不一樣,其會(huì)同時(shí)服務(wù)多個(gè)用戶(hù)/租戶(hù),其并行操作的規(guī)模要大得多,平均到每個(gè)SSD的工作隊(duì)列深度通常在16~64的水平。
常用的測(cè)試軟件大多可以模擬比較大規(guī)模的訪問(wèn),譬如CystalDiskMark,其4KB隨機(jī)寫(xiě)測(cè)試的默認(rèn)設(shè)置是線(xiàn)程數(shù)為1,隊(duì)列32——ATA協(xié)議的最大隊(duì)列深度就是32。而針對(duì)NVMe SSD的預(yù)設(shè)為線(xiàn)程16、隊(duì)列32,也就是界面中簡(jiǎn)寫(xiě)的“Q32T16”。
實(shí)際的隊(duì)列深度就是隊(duì)列數(shù)乘以線(xiàn)程數(shù),Q32T16就是32×16=512,總共可以向SSD發(fā)出512隊(duì)列深度的操作請(qǐng)求。NVMe協(xié)議可以接受64K之多的隊(duì)列,而且還可以?xún)?yōu)化操作順序,原則上隊(duì)列深度越大,平攤下來(lái)的指令延遲相對(duì)越小,IOPS會(huì)越高。因此,在使用CystalDiskMark做測(cè)試時(shí),如果忘記選擇NVMe模式,那就是使用較小的32隊(duì)列深度進(jìn)行隨機(jī)測(cè)試,成績(jī)就會(huì)差一些。
?深究一下隊(duì)列和線(xiàn)程
隊(duì)列深度是我們?cè)O(shè)置的隊(duì)列數(shù)和線(xiàn)程數(shù)的積。理論上來(lái)說(shuō),對(duì)于SSD而言,線(xiàn)程1×隊(duì)列512,與線(xiàn)程16×隊(duì)列32,由于乘積相同,其實(shí)是等效的。
較多的線(xiàn)程可以充分發(fā)揮現(xiàn)代處理器核心數(shù)量的優(yōu)勢(shì),有可能帶來(lái)更優(yōu)的測(cè)試數(shù)據(jù),但這并不絕對(duì),這是因?yàn)榭缣幚砥鲀?nèi)核甚至跨插槽的操作也可能會(huì)帶來(lái)預(yù)期以外的結(jié)果。相對(duì)而言,線(xiàn)程1得到的測(cè)試數(shù)據(jù)更容易復(fù)現(xiàn)。因此,在實(shí)際的測(cè)試當(dāng)中,我們會(huì)建議分別考察1個(gè)線(xiàn)程和8/16個(gè)線(xiàn)程的結(jié)果。
多線(xiàn)程的測(cè)試還有更為復(fù)雜的設(shè)置技巧,譬如讓不同線(xiàn)程寫(xiě)入不同的區(qū)域,這會(huì)帶來(lái)更可靠的性能。?
?較大的隊(duì)列深度有利于獲得更高的IOPS,讓數(shù)據(jù)更好看。但對(duì)于消費(fèi)類(lèi)SSD,深隊(duì)列的測(cè)試數(shù)據(jù)參考價(jià)值不高,大家還是看淺隊(duì)列(Q1T1)的數(shù)據(jù)更有參考價(jià)值。對(duì)于數(shù)據(jù)中心SSD,一般官方公布的4KB隨機(jī)讀寫(xiě)測(cè)試的數(shù)據(jù)是在256隊(duì)列深度下的。更大的隊(duì)列深度,如512,可以體現(xiàn)特別極端的情況,但實(shí)際應(yīng)用中很少發(fā)生,因?yàn)榉e壓太多請(qǐng)求也意味著累積的延遲非常大,會(huì)拖慢整個(gè)系統(tǒng)的響應(yīng)。如果服務(wù)器真的會(huì)有這么大的負(fù)荷,那應(yīng)該建議配置更多的SSD來(lái)分擔(dān)。
?小結(jié)
?今天,大家對(duì)SSD測(cè)試的基本參數(shù)就算入門(mén)了,對(duì)常見(jiàn)測(cè)試軟件提供的預(yù)設(shè)信息可以做到“知其然,知其所以然”。對(duì)于IOmeter,我們只是初步展示其界面,其中有許多的預(yù)設(shè)項(xiàng)目,經(jīng)過(guò)本節(jié)文章,大家也能夠有所理解。下一節(jié),我們將詳細(xì)講解IOmeter的設(shè)置,以及一些稍微高級(jí)的測(cè)試設(shè)計(jì)技巧。