newsence
來源篩選

Modernizing Linux swapping: introducing the swap table

Hacker News

This article from LWN.net discusses a proposed new mechanism for managing swap space in the Linux kernel, called the 'swap table', aiming to improve performance and efficiency.

newsence

現代化 Linux 記憶體交換:引入交換表

Hacker News
23 天前

AI 生成摘要

這篇來自 LWN.net 的文章探討了 Linux 核心中一個名為「交換表」的新記憶體交換空間管理機制,旨在提升效能與效率。

背景

這篇來自 LWN 的文章探討了 Linux 核心引入「交換表」(swap table)以現代化交換機制(swapping)的提案。這項改進旨在解決長期以來 Linux 在記憶體壓力下效能劇烈下降的問題,並試圖讓核心在處理分頁置換時更加高效且具備預測性。

社群觀點

Hacker News 的討論主要圍繞在 Linux 處理記憶體壓力時的「失能」表現,特別是當系統接近滿載時,核心往往會陷入一種被稱為「交換風暴」(swap storm)的狀態。許多使用者抱怨,即便關閉了交換空間,核心仍會因為試圖回收可讀取的執行檔頁面(executable pages),導致系統頻繁從磁碟重新載入指令,最終造成介面完全凍結。這種行為讓開發者感到挫折,因為在這種狀態下,管理員甚至無法透過 SSH 登入或執行簡單的指令來殺死失控的程序,只能無奈地長按電源鍵強制重啟。

針對如何緩解這種停滯感,社群內存在技術性的爭論。部分觀點認為,Linux 缺乏一種機制來標記「互動性必需」的頁面,導致桌面環境或視窗管理員在壓力下被置換出去,失去了對系統的控制權。雖然有開發者指出可以使用 mlock()cgroup 的記憶體限制來鎖定特定程序的記憶體,但這通常需要應用程式端的支援或複雜的手動配置。此外,關於「多代最近最少使用演算法」(MGLRU)的討論也十分熱烈,支持者認為這顯著改善了 ChromeOS 等裝置的流暢度,但也有反對者分享在特定核心版本下,該機制反而導致系統頻繁進行記憶體重組而產生卡頓。

關於是否應該開啟交換空間,社群分成了兩派鮮明的立場。反對派認為在現代大容量記憶體與高速 SSD 的時代,交換空間已是過時的產物,且過大的交換空間只會延遲 OOM Killer(記憶體溢出殺手)的觸發,讓系統在無響應的狀態下掙扎更久。然而,支持派則主張交換空間並非單純的「慢速記憶體」,其核心價值在於讓系統能將不常用的匿名頁面移出,騰出更多物理記憶體作為磁碟快取(disk cache),從而提升整體效能。他們強調,適量的交換空間能作為系統壓力的緩衝,避免程序在遇到突發性記憶體需求時直接被系統強制關閉。

最後,討論也觸及了交換檔案與交換分區的選擇。雖然交換分區在設定上較為單純且支援休眠(hibernation),但現代觀點更傾向於使用交換檔案,因為其具備動態調整的靈活性。專家建議,與其遵循過時的「記憶體兩倍」法則,不如根據實際觀察到的不活躍頁面量來配置數百 MB 到數 GB 的交換空間,並搭配合理的 cgroup 限制,以防止系統在極端情況下陷入無法挽回的集體分頁置換。

延伸閱讀

  • MGLRU 官方文件:詳細介紹了 Linux 6.1 後引入的 Multi-Gen LRU 機制,旨在優化分頁回收決策。
  • Magic SysRq Key 指南:當系統因交換風暴凍結時,如何透過硬體組合鍵強制觸發 OOM Killer 以奪回控制權。
  • Denning 的工作集模型(Working Set Model):留言中提到的經典論文,探討程式執行時所需記憶體頁面與系統抖動(Thrashing)的關係。