• 沒有找到結果。

Experiment of vary log buffer size

這部分要探討的是在不同的 Log buffer 硬體資源情況下搭配不同 trace 的特性, 而 我們的 device-simulation 如何去找出最佳的α值去適應不同的 Log buffer 硬體資源和

0

Memory (KB) Memory (KB)

4.3% 2.7% 1.6% 1.0% 0.6% 0.4% 0.2% 5.8% 3.9% 2.9% 1.6% 1% 0.6% 0.5%

Windows NB Ubuntu

WB WB

LB =64M LB =128M

圖 0.19: memory-used ratio

不同 trace 的特性。 而我們一樣將分為兩個方面去討論 1. Performance evaluation 2.

memory evaluation。 但是不一樣的是隨這 log buffer size增大在log buffer 中的group 也會隨之增多,可是此時我們SSD control ram 並沒有變多,因此當log buffer增大時我 們就會利用前面提到的early deletion來減少記憶體的消耗。

4.3.1 Performance evaluation

這部分我們首先要探討在不同log buffer size 下搭配不同的LogbuffernodeTH來 限制在log buffer中的 group,0.20左邊是windows Desktop右邊是Ubuntu這兩 個workload的logical partition都 是40GB,所以們能摸到的LBA數會較多因此我們拿 來做實驗。 我們首先來看當LogbuffernodeTH¿2000下early deletion所帶來的效能降級 非常的不明顯可以說和沒有限制 log buffer group 的情況下, 這說明我們可以藉由 early deletion 的方法來降低 log buffer size 增大時我們使用 SSD control ram 並不會隨他 線性增加。 而看圖中比較極端的例子當我們將LogbuffernodeTH設的很低時候(200)我 們可以看到效能的方面有呈現降級的現象, 因為我們 keep太少 log buffer group 的資訊 造成他的精準度變差。 圖0.21是在不同LogbuffernodeTH情況下α的變化,我們可以看到 在200的時候α的變化跟沒有限制時有這顯著的變化。 總之用適當 LogbuffernodeTH 作

early deletion不僅能減少記憶體消耗在效能方面也不會有太多的降級。

4.3.2 memory evaluation

這部分我們首先要探討在不同log buffer size 下搭配不同的LogbuffernodeTH所 產生的記憶體消耗量。 圖0.22我們可以看到如果不對 log buffer group 作限制的話記憶 體的消耗是一件恐怖的事, 尤其看 Ubuntu workload 幾乎是以倍數再增加,而使用 Log-buffernodeTH 我們可以看到記憶體消耗量方面 windows Desktop 都可以減少2成∼3 成,128M256M減少的量不明顯是因為在這兩的log buffer size下並不會太多因為

Buffer size 16M

200 1000 2000 3000

4000 5000 No limit Buffer size 8M

Elapse time Elapse time

LB LB

圖 0.20: vary logbuffer with early deletion

Windows Desktop Ubuntu

圖 0.21: On-line value changes of α

Desktop本身是屬於較locality的存取行為所以它會摸到的LBA比較少;Ubuntu 就 不一樣了大概可以減少4成∼5成, 原因是因為 Ubuntu 本身就是屬於較零碎的存取行為 所以它能摸到的 LBA 相對多很多造成就算 log buffer size 只有128M 時我們就有要做 early deletion 的必要。 early deletion 能減少的記憶體消耗根據 workload 的存取範圍 和存取行為或多或少的節省, 對整體而言 early deletion 是必須要做的尤其當 log buffer size 大的時候。

¡ ¢££ ¤¥¦§¨¤©ª

圖0.22: Memory requirements for simulation vs. log buffer size

第五章 Conclusion

SSD 把資料儲存在 NAND Flash Memory 中, 而由於採用 outplace-update 所以 在寫入資料時可能會因為閒置空間不夠而觸發 GC, 在寫入愈 random的資料時回收

in-valid資料代價愈高, 導致愈慢的寫入效能, 這是 SSD 在一般應用上的效能瓶頸, 長久以

來討論固態硬碟上無非是要將從host 端的 write request 吸收/整理成對底層 NFTL 能 夠快速處理的形式。 而決定 write buffer 寫到底層 NFTL log buffer 的資料型態就是此 write buffer的演算法(換言之也是決定甚麼型態的資料須要留在write buffer 中) write buffer 替換演算法大多是針對時間或空間的區域性如[4, 2, 3]或者是觀察NFTL 的運作 如[9]BPLRU是屬於完全考慮時間區域性的演算法搭配hole plugging, 它的缺點是無法

分辨group中的冷熱資料及忽略了空間區域性;FAB則是完全的考慮空間區域性,它的缺

點是假如write buffer空間不足難以發揮此演算法優勢及忽略的時間區域性;CLC 方法想

綜合時間/空間區域性將buffer分成兩個partition,因此他有額外的參數要設定; REF的 話是優先將在log buffer有更新資料的group優先當作victim,缺點是必須在log buffer 空間極度缺乏的情況下才會有不錯的效能。 此篇論文提出的方法是利用simulation-assisted 的方式去發掘潛藏在 workload 中的 locality, 畢竟 workloadlocality 是我們沒辦法 掌握,我們必須在 run-time 的時候根據我們simulation 的結果去調整我們write buffer 替換演算法 (也就是改變α),我們首要的就是能利用的resource 不多,而在此篇論文的提 出的方法可以盡可能去減少不必要的資源浪費只存放重要且有代表性的資料而這些資料 足以讓我們建構出 write/log buffer 演算法的行為, 並不會造成 simulation 出來的結果 不準確也就是成功地在減少resource 消耗和simulation 準確度間找到一個平衡點,讓我 們的 simulation 足以放入device 端。

相關文件