Linux 内核正迎来一项可能改变内存管理方式的新提案。来自谷歌的内存管理专家 Roman Gushchin 提交了一组补丁,计划允许通过 BPF(eBPF)直接定制系统在 内存溢出(OOM, Out-of-Memory) 时的处理逻辑。这意味着,长期以来依赖内核默认 OOM killer 或用户空间工具(如 systemd-oomd)的局限性,或将被更灵活、可编程的机制取代。
https://lore.kernel.org/lkml/[email protected]/
该方案的核心思路是在内核触发 OOM killer 之前,先调用 BPF 程序。运维人员或云平台可以借此决定是终止某个特定进程、清理某个内存 cgroup,甚至通过删除 tmpfs 文件来释放内存,而不必一刀切地依赖内核默认策略。同时,新的补丁还引入基于 PSI(Pressure Stall Information) 的 OOM 触发机制,更好地判断何时真正进入“内存压力”状态,从而避免系统假死或误杀关键进程。
在实现上,这些补丁增加了新的 BPF 辅助函数,例如显式杀死指定进程的 bpf_oom_kill_process()
,以及获取内存 cgroup 根节点的 bpf_get_root_mem_cgroup()
,为内核空间提供了更强的可编程接口。
如果最终被合入主线,Linux 将首次赋予开发者和运维团队在内核层面 “编写自己的 OOM 策略” 的能力,这对数据中心、云计算平台以及对内存敏感的服务部署而言,都可能带来深远影响。