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