zswap

zswap

zswap是一項Linux核心的虛擬記憶體壓縮功能,可為將要交換的頁面提供壓縮回寫快取。

基本介紹

  • 中文名:zswap
  • 作用:記憶體壓縮
簡介,發展背景,zswap與zRam,

簡介

當記憶體頁將要交換出去時,zswap不將其移動到交換設備,而是對其執行壓縮,然後存儲到系統RAM內動態分配的記憶體池中。回寫到實際交換設備的動作則會延遲,甚至能完全避免,從而顯著減少Linux系統用於交換的I/O;副作用則是壓縮所需的額外CPU周期。zSWAP並不虛擬一個塊設備,而是hook到普通的swap代碼里,在實際發生寫入到磁碟/從磁碟讀取的操作前,先利用自己管理的記憶體進行數據的換出/換入,記憶體不夠用以後再使用傳統的swap分區。所以zSWAP適用於本身已經有交換分區的系統,而zRAM更適合Android這樣本身不配置交換分區的嵌入式系統。

發展背景

3.11版Linux核心豐要實現了以下新功能:加入了用於創建安全臨時檔案的標識位OTMPFILE;實驗性的Radeon顯卞動態電源管理支持,需要傳遞radeon.dpm=1參數啟用;針對並行分散式檔案系統Lustre的客戶端支持;初步支持NFS42和具備SELinmx標籤的NFS分區;詳細的頁面寫入歷史追蹤等。此外還改善了SYSVIPc訊息佇列擴展性,允許應用程式請求低延遲網路Polling,並增加可壓縮交換分區快取Zswap。

zswap與zRam

zRam其實有兩個很大的問題,就是當記憶體快填滿的時候,zRam本身會試圖向記憶體返回數據,而系統會試圖向zRam中填充數據。
zRam的實現是把自己虛擬成一個swap分區。而zSwap則是介入了核心的swap過程,將所有被系統swap出來的數據全部截留,存入自己的存儲器中。這種實現方式有個好處,就是能和真正存在於硬碟上的swap分區聯合使用。也避免了zRam的兩大問題。
因為zSwap在面臨記憶體不足時可以向swap分區寫入數據,而不會試圖向記憶體中返回數據。另一方面,如果有大段記憶體被空閒程式占據,zSwap可以把這些數據填入硬碟中。由於這些記憶體極少被使用,所以存入較慢的硬碟也不會影響運行速度。
zSwap其實可以工作在和zRam一樣的模式下,只要不要設定swap分區即可。

相關詞條

熱門詞條

聯絡我們