月初我们报道了Ubuntu 22.04 版本频繁杀死应用的问题,systemd-oomd 在高内存/交换使用期间会直接杀死 Firefox 等应用程序,而不会给用户任何反馈。
问题出现之后,Ubuntu 开发人员一直在寻求解决方法,以更好地处理 systemd 的内存不足守护进程 (OOMD),并为出问题的 Ubuntu 22.04 LTS 用户提供修复。如今该问题得到了解决,据外媒 Phoronix 报道,新的 systemd 249.11-0ubuntu3. 软件包包含对 OOMD 的最新改动:默认禁用 swap kill。
此补丁将 Ubuntu 22.04 LTS 一直在使用的 ManagedOOMSwap=kill
换成了在根切片 (-.slice) 上设置 ManagedOOMSwap=auto
。默认禁用 swap kill 可以将 Ubuntu Linux 上的 systemd-oomd 默认行为限制为监视内存压力,而不是监视内存交换使用情况。由于 Ubuntu 只提供了 1GB 的交换空间,监视内存交换使用情况很容易触发条件,而监视内存压力则有效改善了应用程序意外终止的体验。
该补丁预计会在 Ubuntu 22.04 LTS 的下个修复版本中实装。
目前Linux的休眠功能主要是靠硬件ACPI S4的支持,这种情况下必须存在足够大的swap区才可以休眠(即使只是swap文件挂载成swap分区)。