
Ubuntu 26.10 正在重新定义系统内存耗尽时的”牺牲顺序”。新的策略明确:应用程序会成为首选”牺牲品”,而负责维系整个桌面会话的核心服务则被移至保护区域。

具体而言,39 项关键服务的 OOM(Out-Of-Memory)评分被下调至 -500,其中包括 GNOME Shell 以及两项 D-Bus 服务。这些核心组件因此大幅降低了被内核 OOM 杀手选中的概率,取而代之的是那些大量占用内存的应用程序——比如一个开了很多标签页的浏览器——更可能成为内存压力下的首要目标。

Canonical 同时禁用了 systemd-oomd 检查机制,该机制原本可能在内存压力 alone 的情况下导致整个会话被终结。不过需要留意的是,尽管有这一改动,当内存严重短缺时,应用程序仍有可能被强制终止。
这一变更已通过 ubuntu-settings 26.10.1 软件包落地,并已向 Ubuntu 26.10 归档库发布。

在内存紧张时,内核会生成一份进程清单,并根据可追溯的内存占用量为每个进程打分,随后叠加一个由用户空间设定的额外分数。这个用户空间分数的取值范围是 -1000 至 1000,分数越低意味着该进程越有可能被踢出运行队列。

根据 Canonical 引用的一份早期报告,Ubuntu 24.10 桌面环境在 2024 年的进程评分情况如下:

这份报告中描述的问题源于用户代码中存在的一个逻辑错误——错误地启动了一系列虚拟机,导致系统内存严重透支。最终 OOM 杀手选择了一个名为 gnome-characters 的小型应用作为牺牲品,虚拟机进程则幸免于难。

在桌面环境中,除了内核自带的 OOM 杀手外,systemd-oomd 也是一个重要的”杀手”角色。它通过监控内存压力水平来触发清理动作,且介入时机比内核 OOM 杀手更早,完全不受上述评分体系的影响。
Ubuntu 默认将 systemd-oomd 配置为:当用户会话内存压力达到 50% 时即开始干预。这意味着仅靠 -500 的评分并不足以保护任何进程,必须配合其他机制才能生效。同一份 ubuntu-settings 补丁同时处理了 systemd-oomd 侧的配置。

具体而言,ManagedOOMMemoryPressure 在 user@.service 中已设置为 auto,替代了原先的 kill 模式。Canonical 的实测数据表明:未经修复时,10 次会话中有 7 次会遭遇崩溃;修复后,零次崩溃。
如果你希望提前体验这一变化,当前 开发版本(Development Release) 中已经内置了相关更改。
Canonical 鼓励用户在内存或交换空间不足的场景下对系统进行压力测试,例如运行高内存消耗的工作负载。
如果在测试过程中遇到任何异常行为(如应用程序突然终止或会话崩溃),请通过 Launchpad 提交 Bug 报告,帮助团队持续优化这一机制。
关注微信号:智享开源 ,及时了解更新信息。
原文链接:https://feed.itsfoss.com/link/24361/17468373/ubuntu-26-10-oom-policy
你必须 登录 才能发表评论.
| 微信捐赠 | 支付宝捐赠 |
|---|---|
![]() |
![]() |
扫码关注公众号:智享开源

还没有任何评论,你来说两句吧!