因此,全盤隨機寫入一次導致從來沒有寫入數(shù)據(jù)的地址所占據(jù)全盤的比例為e-1,也就是說全盤隨機寫入一次僅僅相當于寫入了1-e-1=63%的地址范圍,除此之外37%的地址范圍是不包含有效數(shù)據(jù)仍然處于空盤狀態(tài)。因此,采用這種方法,即便寫入3次,也仍然有5%的地址范圍未被覆蓋,這相當于憑空增加了5%的超額配置。因此采用全盤隨機寫入的方法進行預(yù)處理的效率是很低的。
有些磁盤性能測試工具可以選擇在隨機寫入的時候指定是否允許寫入重疊的地址范圍。例如fio在隨機寫入的時候會記錄哪些地址曾經(jīng)寫過,它會避免已經(jīng)寫入的地址重復(fù)寫入,從而避免了上述填充的效率問題。為了記錄已經(jīng)寫入的地址范圍,它使用了系統(tǒng)中的一段內(nèi)存。如果系統(tǒng)內(nèi)存不足且不需要這個功能,可以通過norandommap開關(guān)把這個功能關(guān)閉。
該如何加速SSD進入穩(wěn)態(tài)?
而采用先進行一次全盤順序?qū)?,再進行數(shù)次隨機寫的方案,則可以加速進入穩(wěn)態(tài)。這是因為先前的1000GB寫入把所有的地址范圍全部占用了,在此基礎(chǔ)上的隨機寫入則會占用多余的超額配置空間,使得SSD盡快啟動垃圾回收并進入到穩(wěn)態(tài)。此外,寫入同樣的數(shù)據(jù)量,順序?qū)懭胍入S機寫入快不少,可以提高預(yù)處理的效率。
在這個過程中,我們甚至可以觀察到SSD的寫入帶寬從順序?qū)懙妮^高性能,先跌入到一個谷底而后再逐漸恢復(fù)到隨機寫的穩(wěn)態(tài)性能。這個帶寬的谷底又是怎么回事?這僅僅是由于SSD垃圾回收采用了惰性策略導致不及時進行垃圾回收所致嗎?
實際上,這個性能的低谷才是SSD寫入性能的下界。這個谷底的產(chǎn)生是因為寫壓力從順序轉(zhuǎn)換成隨機,導致Flash物理塊的淘汰策略發(fā)生切換所致。由于之前的壓力為純順序?qū)懭耄赟SD內(nèi)部物理數(shù)據(jù)塊的淘汰采用了論資排輩的先寫入先淘汰的方法,而一旦切換到隨機寫入,原來這些“年齡”偏大的物理塊不再被繼續(xù)選擇出來淘汰,而新的寫入方法尚未建立起穩(wěn)定的待回收的數(shù)據(jù)塊供應(yīng),因此這個時候所有等待回收的物理塊中有效數(shù)據(jù)全面偏多,造成性能的谷底。
小結(jié)
這就好比在2000年的時候,通信行業(yè)非?;鸨?,院校里通信和電子類專業(yè)非常熱門。但是等這些專業(yè)學生畢業(yè)的時候,通信行業(yè)的需求已經(jīng)有飽和的趨勢,而計算機則成了新的熱門,再往后是金融。如果處在選擇專業(yè)的高中畢業(yè)生只關(guān)注當下的行業(yè)需求,缺少對未來的分析和判斷,那么往往選擇的專業(yè)在就業(yè)的時候就成為了明日黃花,只有有了預(yù)判能力,才能把握住時代的需求。對于一個有預(yù)判能力的SSD,就應(yīng)該根據(jù)用戶業(yè)務(wù)類型和內(nèi)部的數(shù)據(jù)塊中有效內(nèi)容的分布規(guī)律,提前和合理安排垃圾回收,才能避免這個寫入性能的谷底,保持一個接近全盤隨機寫的性能下限。