讀和寫操作混合才符合服務器的真實應用常態,至于具體的讀寫比例,需要根據預期部署的業務來定。根據經驗,在線交易、虛擬化類的應用,讀寫比例大約是70:30的量級;CDN、AI等應用,是90:10。做視頻點播、大數據應用的,可以不考慮做隨機讀寫的測試,做90:10的順序讀寫更為合理。相應的,我們也可以根據SSD的特點去預設其適合的應用領域,譬如DWPD為1的SSD,設計測試方案的時候,安排70:30的混合隨機讀寫是沒有錯的;而DWPD小于0.5的SSD,做70:30的混合隨機讀寫就是強人所難了,改為90:10更為合理。

獲得可信的性能數據

在消費類SSD的測試文章中,大家可能會看到一種表達:在填充若干容量數據之后,讓SSD靜置若干時間,然后進行某某測試。這么做的目的是讓SSD有機會進行垃圾回收,讓SLC緩存容量盡量恢復,甚至包括降低溫度,以期在后續的測試中獲得更好的測試結果。當然,這不能稱為作弊,因為個人電腦本來就是斷斷續續地工作的,連續讀寫大容量數據的時候并不多,進行適當的休整后進行的測試更符合真實情況。

然而,服務器的工作有峰谷之別,但很可能并沒有休息的時候。因此,數據中心SSD特別關注的是在連續運行的情況下,它還能穩定地輸出多少性能。用術語來說,就是需要考察SSD的“穩態”(Steady State)性能。前面曾經提到的“萬秒圖”可以看做是一種簡易地觀察SSD穩態性能的方式,這樣的壓力測試對于消費類產品而言是足夠的,但對于容量較大的數據中心SSD并不具備普適性。稍后我們會專門介紹讓數據中心SSD進入穩態的標準操作。

一個SSD在正常工作期間會經歷三個階段,參考SNIA的提法,分別是:

FOB(Fresh Out of the Box):就是全新的、剛開封的盤。經過安全擦除的SSD也近似于FOB狀態。這個時候的盤所有的頁都是空白的,任何寫入操作都可以直接進行編程,不需要考慮擦除、垃圾回收等操作的影響。消費類SSD的標稱性能都是處于這個狀態。這個階段的測試成績可以看做是養精蓄銳之后的沖刺,漂亮,但不可持續。

Transition:過渡或者轉換狀態。這個狀態的性能會明顯低于全新時的表現,但是又高于穩定態。不同的SSD在這個階段的性能表現和持續時間差異較大,這與主控、固件、介質都有關系。隨著技術進步,較新式的數據中心SSD會比早期的SSD更容易度過這個階段。這個階段可以看做是跑步期間休息了一會兒,再次跑起來的時候顯得還比較輕松,但也不可持續。

Steady State:穩定態或穩態。測試成績比之前的要低,但波動不大了,譬如連續五次測試的平均性能變化不超過20%。這是長跑的真正狀態,呼吸節奏均勻,對肌肉酸痛已經麻木,配速比較穩定。隨著時間持續,性能可能會進一步下降,但變化比較平緩。

對于服務器而言,SSD進入穩態后的數據才是有參考價值的。在SNIA的示意圖當中,SSD需要兩三百分鐘才進入穩定態。事實上,我們單項測試進行預處理(Preconditioning)的時間確實需要花幾個小時,甚至十幾、幾十小時,尤其對于容量巨大的SSD而言。但是,要獲得讓用戶有參考價值、令人信服的性能,這種代價是必須的。

如何有效地進行預處理?

只要SSD持續測試的時間夠長,SSD總可以進入穩定態的——“萬秒圖”不夠的話,那就搞“十萬秒圖”?真這樣干就顯得很盲目??!

說到蠻干,嘿嘿……其實……我把預處理放在IOmeter的測試方法后面才說,是有“險惡用心”的。前面我教了大家把讀啊寫啊的測試項一股腦堆到任務列表里,甚至教大家逐次增加隊列,測試總量很容易就堆積出來了。雖然每個測試也就10分鐘而已,但任務多啊,這一通組合搞完,幾個小時甚至幾天就過去了。然后,發現數據不太可靠,這……大腿都得拍腫了!

所以,我們應該提前進行有意識、有效率地操作,讓SSD盡快進入穩態。這個過程就叫做“預處理”(Preconditioning)。

預處理的本質就是確保把NAND Flash的所有頁填滿(垃圾)數據,讓SSD的所有寫操作都在相對低效率的情況下完成。這就如同人需要被逼到極度疲勞的狀態下,才能更清楚地了解其基本功,包括技術、耐力、意志力,甚至道德底線——這是特種部隊用地獄周進行選拔的模式。也只有經過這種嚴格的考核,數據中心SSD才能體現其遠高于消費類產品的溢價。

由于SSD在標稱容量之外,還有一些保留的空間(OP),所以,為了確保所有頁被寫入,設計的寫入量一定要明顯大于標稱容量,通常操作就是直接滿盤寫兩遍。而且這個寫入過程必須是連續的,否則SSD一旦獲得喘息之機,開始專心進行垃圾回收,那后面的情況就很難說了。多數快餐測試軟件不能進行長時間的、穩定地寫入,譬如消費類SSD常跑的CrystalDiskMark,單項測試時長最多選擇60秒,循環10次,總時間不過10分鐘而已。

簡而言之,10分鐘一個項目,做穩態階段的測試足夠,但做預處理是不夠的。最適合做預處理的就是FIO,這個以后介紹,我們先介紹IOmeter做預處理的方法。

通常順序讀寫測試使用128KB數據包,我們就建立一個128KB順序寫的項目。順序寫也是最快填滿的方法了。

Worker可以只用1個,相當于1個線程。數據選擇偽隨機。I/O深度固定在16或者32就夠了。

IOmeter做預處理不像FIO那么方便,后者可以設置相對于容量的循環,前者只能通過運行時間來間接控制寫入量。我們可以用容量去除以標稱的順序寫入速度,這樣就可以預估寫滿一遍的時間。把這個時間乘2,那就是計劃的持續寫的時間。特別強調的是,基于標稱速度的計算只對數據中心SSD有效,因為數據中心SSD標稱的通常是穩態性能,是可信的。而消費類SSD標稱的寫入速度是極大值,出緩后的寫入性能必然暴跌——除非你知道會跌到什么程度,否則拿什么數值當除數呢?這也側面說明了“可預期”的性能是多么重要。

如果我們對測試對象的順序寫入性能沒有自信,那就不設具體的時間,直接開始跑順序寫項目,IOmeter會不間斷地運行。在此期間,我們可以看到平均寫入速度。平均寫入速度會逐步下降,當相對平穩的時候,我們就可以根據這個速度去估算合理的總時間,超過這個時間后手動結束測試,這樣初步的預處理就算完成了。

我們也可以通過CystalDiskInfo之類的軟件隨時判讀SSD的寫入量變化。如果增量達到2倍容量,就可以停止寫入。對于預設了時間的操作,如果寫入量達到1.5倍容量,也是可以接受的,否則就只能設一個更長的寫入時間,重新進行預處理。

預處理完成后,我們可以先進行簡單的測試,不做太復雜的設置,看看數據是否穩定。初期可能會出現寫入IOPS比較高的情況,如果10分鐘左右就能進入正常區間就是比較順利的。感覺比較穩之后,就可以大刑伺候了。

結語

經過三個階段的學習,相信大家在Windows下已經可以熟練使用IOmeter了。雖然IOmeter的設置界面比快餐軟件們復雜很多,但只要測試思路明確,設置起來還是很直觀的。建立了自己的配置文件之后,操作起來就更是輕車熟路,碾壓普通的數碼UP主那是小菜一碟啊。

對于面向數據中心、企業市場的經銷商、集成商,熟悉IOmeter只是在專業領域入了門。大家還是要進一步熟悉服務器主流操作系統Linux的實際操作,下一階段,我們就要把FIO用起來。

未經允許不得轉載:存儲在線-存儲專業媒體 » SSD新范式 |數據中心SSD測試之Windows篇(三)
分享到

zhupb

相關推薦

精品国产午夜肉伦伦影院,双性老师灌满浓jing上课h,天天做天天爱夜夜爽,攵女乱h边做边走