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.
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.
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 限制,以防止系統在極端情況下陷入無法挽回的集體分頁置換。