Ubuntu 正在處理 22.04 版本頻繁殺死應用的問題
Ubuntu 22.04 LTS 版本帶來一項新功能:默認啟用 systemd-oomd 作為內存不足時的守護進程,它可以在內存高壓的情況下干掉一部分進程。
然而,該 OOMD 功能似乎殺紅了眼,有時候即使用戶沒有感到任何內存壓力,它也會莫名其妙地終止正在運行的程序,比如 Firefox、Chrome 或 Visual Studio Code,體驗極差的用戶在 Ubuntu 社區郵件列表中大量留言吐槽。
一位沮喪的用戶寫道:
在殺死應用程序之前應該有一個警告,以便有機會保存應用程序數據。殺死應用程序后至少應該有道歉和解釋。當前的行為給人的印象是 Ubuntu 22.04 使用起來不可靠且不安全,這對于 LTS 版本來說是個大問題。
隨后,Canonical 工程師 Nick Rosbrook 在郵件中解釋了 OOMD 殺死進程的條件:
條件 1:當總系統的內存使用量和交換使用量都超過 SwapUsedLimit(在 Ubuntu 上默認為 90%), cgoups 中超過 5% 的交換就會成為 OOM 的終結對象。
條件 2:當一個單元的 cgroup 內存壓力超過 MemoryPressureLimit ,則監控后代 cgroups 將從具有最多回收率的進程開始執行終止。
在實踐中,大部分應用被殺死都是因為條件 1,很大程度上是因為 Ubuntu 只提供了 1GB 的交換空間, SwapUsedLimit 太容易達到 90%。
基于進程的終止條件,Nick 提出了一些改動的思路,比如改變 systemd-oomd 計算 / 觸發內存值的方式,又或是增加 SwapUsedLimit 的值,因為 1 GB 實在太少了。
社區現已針對該問題啟動了一個 Ubuntu 開發線程,征求更廣泛的 Ubuntu 社區反饋,該問題應該會在 22.04.1 更新中得到解決。
本文轉自OSCHINA
本文標題:Ubuntu 正在處理 22.04 版本頻繁殺死應用的問題
本文地址:https://www.oschina.net/news/199125/ubuntu-22-04-systemd-oom-killing-apps