一些數(shù)碼大V在消費(fèi)類SSD中也會(huì)使用IOmeter以體現(xiàn)其專業(yè)度。這種“專業(yè)”會(huì)包括兩方面:其一,IOmeter的界面比CystalDiskMark、TxBENCH、AS SSD等“快餐”測試軟件要復(fù)雜得多,會(huì)給人營造艱深晦澀的感覺。

其二,IOmeter確實(shí)可以提供“快餐”軟件所缺乏的數(shù)據(jù),典型的成果包括諸如“萬秒圖”之類的?!叭f秒”意味著可以給SSD比較重的負(fù)荷,說服力也會(huì)高很多。而工作負(fù)荷的輕重,不僅僅是高低檔消費(fèi)類SSD的區(qū)別,也是數(shù)據(jù)中心SSD與消費(fèi)類SSD的根本區(qū)別。

SSD工作負(fù)荷的輕重,主要體現(xiàn)在幾個(gè)方面:

?1、隊(duì)列深度

?2、混合讀寫

?3、持續(xù)時(shí)間

這幾方面的內(nèi)容我們會(huì)在相關(guān)的測試項(xiàng)目中逐步展開。同時(shí),我們先通過消費(fèi)者熟悉的快餐測試軟件幫助讀者理解測試項(xiàng)目的內(nèi)涵,并在此基礎(chǔ)上逐步過渡到IOmeter,再進(jìn)階到FIO的應(yīng)用。

?

?測試最基本的設(shè)置:數(shù)據(jù)包大小

?略有SSD測試常識(shí)的人都知道,需要考察幾種性能:順序讀、順序?qū)?、隨機(jī)讀、隨機(jī)寫。

那么,順序和隨機(jī)的定義是什么?

先說隨機(jī)?,F(xiàn)代操作系統(tǒng)的內(nèi)存和文件系統(tǒng)都是頁式管理,以4KB為單位?;诖疟P的512Byte扇區(qū)概念對(duì)SSD而言意義不大。因?yàn)镹AND Flash的基本存儲(chǔ)單元是頁,容量一般為2KB或者4KB,這是最小的讀寫單元。因此,綜合操作系統(tǒng)和NAND Flash的特點(diǎn),4KB的數(shù)據(jù)塊會(huì)被看做是最基本、最通用的操作單元,公認(rèn)用這個(gè)容量的數(shù)據(jù)包當(dāng)做“隨機(jī)”讀寫的代表。

考慮到應(yīng)用或者SSD的特點(diǎn),在某些測試中8KB、16KB這樣的數(shù)據(jù)會(huì)更有實(shí)際意義。譬如Oracle數(shù)據(jù)庫的默認(rèn)塊大小是8KB,也可以被設(shè)為2KB~64KB不等。再譬如Solidigm D5-P5316、P5336等大容量SSD使用了64KB或者16KB大小的間接單元(IU,indirection unit),它們可以接受4KB的寫入,但使用更大的數(shù)據(jù)單元會(huì)更有效率。使用這些軟硬件的用戶都會(huì)進(jìn)行針對(duì)性的優(yōu)化,對(duì)應(yīng)的,測試軟件在考察隨機(jī)性能時(shí)也應(yīng)該進(jìn)行相應(yīng)的設(shè)置。

剛才說的是“隨機(jī)”讀寫的尺度與“頁”相關(guān),那么,“順序”讀寫的尺度就與塊相關(guān)了。若干NAND Flash的頁會(huì)組成一個(gè)塊,典型的是64個(gè)頁。常見的塊容量可能是128KB、256KB、512KB。NAND Flash的擦除是以塊為單位的。因此,128KB數(shù)據(jù)包的讀寫可以看作是順序操作的最小單元,1到4個(gè)數(shù)據(jù)塊正好填滿一個(gè)塊。也有的測試會(huì)使用較大的單元,如IOmeter的預(yù)設(shè)是256KB,CrystalDiskMark預(yù)設(shè)了1MB等,這些數(shù)據(jù)包的容量可能更接近NAND Flash的實(shí)際塊容量。

以人們熟悉的CrystalDiskMark為例,左側(cè)的色塊是SEQ1M、SEQ128K、RND4K,代表的就是順序讀寫(1MB數(shù)據(jù)包)、順序讀寫(128KB數(shù)據(jù)包)、隨機(jī)讀寫(4KB數(shù)據(jù)包)。

綜上,設(shè)置正確的數(shù)據(jù)包大小,就是考察SSD的隨機(jī)或順序讀寫的性能。最普適的設(shè)置是4KB和128KB,酌情按照需要額外增加特定的數(shù)據(jù)包大小。

?對(duì)測試成績影響最大的設(shè)置:隊(duì)列深度

?要想在SSD測試中獲得理想的成績,最值得留意的重點(diǎn)是設(shè)置適宜的隊(duì)列深度。

對(duì)于個(gè)人電腦,需要同時(shí)訪問SSD的應(yīng)用程序并不多,主要就是前臺(tái)運(yùn)行的軟件(如游戲、圖形圖像軟件)會(huì)斷續(xù)讀寫較大的文件,以及后臺(tái)運(yùn)行的通訊工具(包括電子郵箱、即時(shí)通訊工具)偶爾接收信息,持續(xù)時(shí)間較長但吞吐量比較小的行為主要是后臺(tái)上傳下載一些文件或者系統(tǒng)更新等。整體而言,消費(fèi)類SSD的工作隊(duì)列深度在1~4之間。

服務(wù)器面對(duì)的情況就不一樣,其會(huì)同時(shí)服務(wù)多個(gè)用戶/租戶,其并行操作的規(guī)模要大得多,平均到每個(gè)SSD的工作隊(duì)列深度通常在16~64的水平。

常用的測試軟件大多可以模擬比較大規(guī)模的訪問,譬如CystalDiskMark,其4KB隨機(jī)寫測試的默認(rèn)設(shè)置是線程數(shù)為1,隊(duì)列32——ATA協(xié)議的最大隊(duì)列深度就是32。而針對(duì)NVMe SSD的預(yù)設(shè)為線程16、隊(duì)列32,也就是界面中簡寫的“Q32T16”。

實(shí)際的隊(duì)列深度就是隊(duì)列數(shù)乘以線程數(shù),Q32T16就是32×16=512,總共可以向SSD發(fā)出512隊(duì)列深度的操作請(qǐng)求。NVMe協(xié)議可以接受64K之多的隊(duì)列,而且還可以優(yōu)化操作順序,原則上隊(duì)列深度越大,平攤下來的指令延遲相對(duì)越小,IOPS會(huì)越高。因此,在使用CystalDiskMark做測試時(shí),如果忘記選擇NVMe模式,那就是使用較小的32隊(duì)列深度進(jìn)行隨機(jī)測試,成績就會(huì)差一些。

?深究一下隊(duì)列和線程

隊(duì)列深度是我們?cè)O(shè)置的隊(duì)列數(shù)和線程數(shù)的積。理論上來說,對(duì)于SSD而言,線程1×隊(duì)列512,與線程16×隊(duì)列32,由于乘積相同,其實(shí)是等效的。

較多的線程可以充分發(fā)揮現(xiàn)代處理器核心數(shù)量的優(yōu)勢,有可能帶來更優(yōu)的測試數(shù)據(jù),但這并不絕對(duì),這是因?yàn)榭缣幚砥鲀?nèi)核甚至跨插槽的操作也可能會(huì)帶來預(yù)期以外的結(jié)果。相對(duì)而言,線程1得到的測試數(shù)據(jù)更容易復(fù)現(xiàn)。因此,在實(shí)際的測試當(dāng)中,我們會(huì)建議分別考察1個(gè)線程和8/16個(gè)線程的結(jié)果。

多線程的測試還有更為復(fù)雜的設(shè)置技巧,譬如讓不同線程寫入不同的區(qū)域,這會(huì)帶來更可靠的性能。?

?較大的隊(duì)列深度有利于獲得更高的IOPS,讓數(shù)據(jù)更好看。但對(duì)于消費(fèi)類SSD,深隊(duì)列的測試數(shù)據(jù)參考價(jià)值不高,大家還是看淺隊(duì)列(Q1T1)的數(shù)據(jù)更有參考價(jià)值。對(duì)于數(shù)據(jù)中心SSD,一般官方公布的4KB隨機(jī)讀寫測試的數(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來分擔(dān)。

?小結(jié)

?今天,大家對(duì)SSD測試的基本參數(shù)就算入門了,對(duì)常見測試軟件提供的預(yù)設(shè)信息可以做到“知其然,知其所以然”。對(duì)于IOmeter,我們只是初步展示其界面,其中有許多的預(yù)設(shè)項(xiàng)目,經(jīng)過本節(jié)文章,大家也能夠有所理解。下一節(jié),我們將詳細(xì)講解IOmeter的設(shè)置,以及一些稍微高級(jí)的測試設(shè)計(jì)技巧。

分享到

zhupb

相關(guān)推薦