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