Ubuntu 开发者邮件列表显示,Ubuntu 22.04 LTS(代号"Jammy Jellyfish")已集成 system-oomd。
据介绍,这项工作主要是为了优化系统在内存不足或内存压力过大时的处理能力。Systemd 247 在 2020 年推出了当时的实验性 systemd-oomd,此后保持迭代开发,一直不断成熟。system-oomd 基于 oomd 的早期代码构建,oomd 是 Facebook 开源的内存溢出处理工具,宣称是「用户空间内存溢出杀手 (OOM Killer)」,已被不少发行版如 Fedora 等使用。
systemd-oomd 利用 systemd 的统一 cgroup 层次结构(cgroup v2,从 Ubuntu Impish 开始提供)来跟踪各个 cgroup 的资源使用情况,如果它们超出配置的配额,则将其杀死。systemd-oomd 会在 Linux 内核的 OOM 杀手启动之前被触发。在 Ubuntu 22.04 LTS 中,默认情况下,该配置使用 20 秒的 MemoryPressureDuration 和 50% 的 MemoryPressureLimit 用于用户会话。
目前正在使用 Ubuntu 22.04 LTS 每日构建的用户可使用 apt 轻松安装 systemd-oomd:
sudo apt install systemd-oomd
为了让 systemd-oomd 正常工作,它需要有一些可用的 swap 空间, 并且应用程序需要将进程生成到单独的 cgroup (例如使用 systemd-run)或使用桌面环境为他们完成此工作。官方称,预计在 4 月发布的 Ubuntu 22.04 LTS 中,计划为 Ubuntu 桌面默认启用 systemd-oomd。