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