出品 | OSC開源社區(ID:oschina2013)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 更新中得到解決。https://lists.ubuntu.com/archives/ubuntu-devel/2022-June/042116.htmlhttps://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1972159https://lists.ubuntu.com/archives/ubuntu-devel/2022-June/042116.html微軟欲閉源VS Code的C#擴展惹眾怒微軟發布Windows 11輕量級變種:支持運行Win32應用Grafana 9正式發布
覺得不錯,請點個在看呀