newsence
破解 zswap 與 zram 的迷思

破解 zswap 與 zram 的迷思

Hacker News·12 天前

這篇文章提供了 Linux 壓縮交換技術的專家分析,主張 zswap 通常優於 zram,因為它與核心記憶體管理整合得更好,且能避免最久未使用(LRU)反轉的問題。

背景

這篇文章由 Linux 核心記憶體管理專家撰寫,旨在釐清 zswap 與 zram 這兩種壓縮交換空間技術的常見誤區。作者從架構層面分析,指出 zswap 整合於記憶體管理子系統,能實現自動分層與優雅降級,而 zram 則被核心視為獨立的區塊裝置,缺乏對頁面冷熱程度的感知,因此建議多數使用者優先選擇 zswap。

社群觀點

在 Hacker News 的討論中,社群對於 zswap 與 zram 的選擇展開了深入的技術辯論。部分資深使用者回憶起早期 SSD 壽命焦慮盛行的年代,當時為了減少寫入損耗,手動設定 zram 是相當普遍的做法,儘管過程繁瑣。然而,當前的討論焦點已轉向系統穩定性與效能表現。支持 zswap 的觀點認為,其最大的優勢在於能與實體磁碟交換空間協同工作,形成有效的 LRU(最近最少使用)分層。當 zram 與傳統磁碟交換空間並存時,往往會發生 LRU 倒置問題,導致 zram 變成記憶體中的死重負擔,甚至引發長達數十分鐘的系統停滯。

然而,也有技術支援專家對作者「有 SSD 就該用 zswap」的假設提出挑戰。反對者指出,市面上許多廉價或無 DRAM 快取的 SSD 在處理同步寫入時,可能會產生長達十秒以上的延遲,這種效能表現甚至比傳統硬碟更糟。在這種極端硬體條件下,使用 zram 搭配使用者空間的 OOM Killer(如 earlyoom)可能是更穩定的選擇,因為這能完全避免觸及緩慢的磁碟寫入。

對此,原作者回應了一個反直覺的觀點:擁有磁碟交換空間反而可能減少磁碟 I/O。他解釋道,在僅使用 zram 的環境中,一旦壓縮空間填滿,核心為了釋放記憶體,將別無選擇地回收檔案快取(file cache)。這會迫使系統頻繁從磁碟重新讀取檔案,產生的讀取壓力同樣會拖慢系統。實驗數據顯示,在某些伺服器環境下,啟用 zswap 甚至能比完全不設交換空間減少 25% 的磁碟寫入。

社群共識傾向於認為,zram 最適合完全沒有磁碟儲存的嵌入式系統或樹莓派等裝置。而對於一般桌面或伺服器用戶,zswap 提供了更好的容錯能力。此外,也有開發者分享了 zswap 在 Kubernetes 工作負載中的正面效益,認為這項技術在現代容器化環境中同樣具有高度價值。

延伸閱讀

在討論過程中,參與者提到了幾項相關的工具與技術議題:

  • earlyoom 與 systemd-oomd:用於在核心 OOM Killer 觸發前介入的使用者空間守護行程,對於調優 zram 環境至關重要。
  • 關於在全磁碟加密與休眠模式下如何配置交換空間的進階討論。
  • zstd 壓縮演算法:在 Django 等實際工作負載中,搭配 zswap 可達到約 5:1 的壓縮率。
https://chrisdown.name/2026/03/24/zswap-vs-zram-when-to-use-what.html