背景
內(nèi)存交換技術(shù)是當(dāng)內(nèi)存緊缺的時候,將內(nèi)存中的頁面交換到交換設(shè)備中(如zRAM,SSD等)。隨著SSD的性能越來越好,越來越多的交換設(shè)備采用SSD。然而對于塊SSD來說,數(shù)據(jù)頻繁寫入更新會導(dǎo)致頻繁觸發(fā)垃圾回收(GC)進(jìn)行空閑空間的回收。而其中的有效數(shù)據(jù)搬移會導(dǎo)致額外的寫放大,因此垃圾回收的效率決定了對壽命的影響程度。Zoned Namespace (ZNS)是一種新型SSD存儲接口特性。一個ZNS SSD是由一系列邏輯可尋址zone(區(qū)域)組成,而每個區(qū)域物理上與SSD擦除粒度Block是對齊的。區(qū)域內(nèi)的讀可以是隨機(jī)的,但是寫必須是順序的。
動機(jī)
對于數(shù)據(jù)中心而言,交換性能十分關(guān)鍵。因此本文針對于交換邏輯和SSD行為之間的相互作用進(jìn)行分析,并得出4點重要發(fā)現(xiàn)。
發(fā)現(xiàn)1:塊SSD執(zhí)行GC時無法感知到已解除分配的交換槽(swap-slots)。
塊設(shè)備SSD通常使用TRIM命令來使設(shè)備感知到交換槽的釋放,然而對降低由于內(nèi)存交換導(dǎo)致的GC開銷效果并不明顯。這是因為對于傳統(tǒng)大粒度TRIM而言,連續(xù)512個邏輯地址頁面的TRIM比較難以達(dá)到,故而TRIM指令的下發(fā)很少,使得效果并不明顯;同時對于小粒度TRIM而言,由于TRIM本身帶有的開銷(如命令下發(fā),元數(shù)據(jù)加載修改開銷等),使得其效果也并不是很理想。圖1展示了實驗結(jié)果。
圖1 TRIM對設(shè)備性能的影響
發(fā)現(xiàn)2:交換緩存無法感知到GC。
圖2展示了設(shè)備使用率對讀性能的影響。理論情況下不同設(shè)備使用率對讀性能應(yīng)該沒有影響,然而經(jīng)過測試發(fā)現(xiàn)當(dāng)設(shè)備使用率高的時候讀性能和寫放大系數(shù)發(fā)生了變化。這跟交換緩存實現(xiàn)的原理有關(guān)。當(dāng)設(shè)備使用率超過50%時,所有交換讀請求不會存放在交換緩存中,此時swap-slot會被釋放。當(dāng)內(nèi)存中逐出該數(shù)據(jù)時,則需要重新將數(shù)據(jù)寫入交換設(shè)備中。這樣設(shè)計的原因有二,一是避免swap-slot過多帶來的管理開銷,二是避免設(shè)備垃圾回收時搬移過多的數(shù)據(jù)量。圖3展示了交換緩存中截斷閾值對性能設(shè)壽命的影響。其中發(fā)現(xiàn)對讀負(fù)載,閾值越大表現(xiàn)越好,因為避免了數(shù)據(jù)的額外寫入;對讀寫混合負(fù)載,閾值越小表現(xiàn)越好,因為及時無效外存數(shù)據(jù)則會提升垃圾回收效率,提高性能。而對于靜態(tài)閾值無法很好地滿足不同工作負(fù)載的表現(xiàn)。
圖2 設(shè)備使用率對讀性能的影響
圖3 交換緩存截斷閾值對性能和壽命的影響
發(fā)現(xiàn)3:GC無法感知到頁面訪問特征。
對于TRIM而言,常見使用大粒度TRIM來降低開銷。然而對于傾斜度較大的負(fù)載,無效掉的數(shù)據(jù)往往無法十分連續(xù)。這會影響TRIM的下發(fā),從而影響GC效率。經(jīng)過測試發(fā)現(xiàn),采用均衡負(fù)載時,換出帶寬為480MB/s;然而對于傾斜負(fù)載(512-slots TRIM)時,換出帶寬為195MB/s,同時對于傾斜負(fù)載(8-slots TRIM)換出帶寬為324MB/s。因此針對不同頁面訪問特征,GC無法很好的感知到,導(dǎo)致整體性能下降。
發(fā)現(xiàn)4:GC無法感知到操作系統(tǒng)的性能隔離。
圖4顯示了不同進(jìn)程的換入帶寬。CG.A為純讀進(jìn)程,CG.B為讀寫混合進(jìn)程。通過圖中可以發(fā)現(xiàn),不同進(jìn)程之間的性能會被相互影響。而理想狀態(tài)下不同進(jìn)程之間的性能應(yīng)該不受到影響,如讀寫混合負(fù)載引發(fā)的GC不應(yīng)該影響純讀負(fù)載的性能。
圖4 進(jìn)程之間性能的相互影響
方法
為了解決上述的四個問題,ZNS SSD在本文中被使用。這是因為ZNS SSD隨著設(shè)備使用率的提升依然保持著穩(wěn)定的性能,如圖5所示。本文提出ZNSwap,其中有三個關(guān)鍵設(shè)計目標(biāo):1. 實現(xiàn)資源高效的主機(jī)端GC:降低主機(jī)端GC最為消耗資源的反向映射表的開銷。2. ZNGC-OS一體化:ZNGC可以直接獲取操作系統(tǒng)暴露的信息來優(yōu)化swap性能,避免TRIM的開銷。3. 交換數(shù)據(jù)放置策略:通過一系列接口實現(xiàn)每個核之間的性能隔離、冷熱數(shù)據(jù)間的性能隔離和進(jìn)程之間的性能隔離。
圖5 ZNS SSD隨著設(shè)備使用率的不同性能的變化
1. ZNGC:ZNGC中實現(xiàn)了反向映射的設(shè)計,通過在頁面的OOB區(qū)域中存儲結(jié)構(gòu)體來進(jìn)行反向映射,而非通過記錄地址轉(zhuǎn)換表,從而節(jié)省開銷。具體結(jié)構(gòu)體設(shè)計如圖6所示。
圖6 Linux反向映射設(shè)計,陰影部分為ZNGC反向映射時所需要用到的結(jié)構(gòu)體
2. ZNGC-swap一體化:其中包括四個部分內(nèi)容。a)物理zone(空間)信息:每個空間與swap-slots的映射相關(guān)聯(lián),映射存儲了每個swap-slot的狀態(tài)。這樣ZNGC和OS就可以立馬知道swap-slot的狀態(tài)轉(zhuǎn)變,不需要TRIM和截斷閾值來管理交換緩存。b)交換空間抽象:可以被用來swap-slot分配的活躍空間通過交換空間抽象進(jìn)行暴露,從而避免管理物理空間的復(fù)雜性。c)ZNSwap策略:提供一系列接口使得可以定制化空間分配策略和回收策略。d)接口:本文定義了三個標(biāo)準(zhǔn)api,核策略、冷熱策略和進(jìn)程策略,分別是對每個核的數(shù)據(jù)、冷熱數(shù)據(jù)和進(jìn)程數(shù)據(jù)進(jìn)行性能隔離。
圖7 ZNGC 策略接口
實驗結(jié)果
ZNGC-交換子系統(tǒng)收益:換出帶寬實驗結(jié)果如圖8所示。正如預(yù)期,隨著設(shè)備使用率的提升GC負(fù)擔(dān)越重。同時,該文章衡量了80%設(shè)備使用率時,CPU的最大開銷。發(fā)現(xiàn),ZNGC的CPU開銷小,同時交換性能表現(xiàn)更好。同時跟采用截斷閾值相比,ZNSwap可以達(dá)到圖3中的ideal。
圖8 換出帶寬和寫放大與設(shè)備使用率的關(guān)系
進(jìn)程交換性能隔離:同時運行兩個進(jìn)程,一個只讀,一個只寫,觀察兩個進(jìn)程的換入性能。結(jié)果如圖9所示。使用進(jìn)程策略,可以使得ZNswap在該條件下達(dá)到最優(yōu)帶寬。
圖9 進(jìn)程性能隔離實驗結(jié)果
總結(jié)
本篇文章針對基于塊SSD開啟內(nèi)存交換進(jìn)行分析后得出四個結(jié)論,塊SSD垃圾回收時所存在的缺陷。進(jìn)而提出使用ZNS SSD,并進(jìn)行內(nèi)存交換的優(yōu)化設(shè)計。具體包括資源搞笑的主機(jī)端GC、ZNGC-OS一體化和交換數(shù)據(jù)放置策略。通過最終的實驗結(jié)果可以得出,ZNswap可以得到較好的性能和較低的寫放大,同時也實現(xiàn)了較好的性能隔離。
審核編輯:劉清
-
存儲器
+關(guān)注
關(guān)注
38文章
7403瀏覽量
163393 -
交換機(jī)
+關(guān)注
關(guān)注
20文章
2600瀏覽量
98879 -
SSD
+關(guān)注
關(guān)注
20文章
2812瀏覽量
116993 -
SWAP
+關(guān)注
關(guān)注
0文章
51瀏覽量
12755
原文標(biāo)題:?ZNSwap: 探索內(nèi)存交換的新出路
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論