31分钟前
[linux内存管理] 第 057 章节 OOM Kill 与 panic_on_oom —— 杀人的艺术与崩溃的抉择
本文深入解析了Linux OOM Killer的最终执行阶段。重点阐述了`oom_kill_process`函数如何完成对选定victim进程的处决,包括检查进程状态、记录关键内存诊断信息(如触发者、内存快照及任务列表)、以及处理可能涉及整个cgroup的批量终止。同时,文章介绍了`panic_on_oom`策略,它作为系统稳定性的最后防线,在特定配置下会在OOM事件时直接触发系统崩溃(panic),而非尝试杀死进程。
1小时前
[linux内存管理] 第 056 篇 OOM Reaper:异步解除映射的幕后英雄
OOM Reaper是Linux内核为解决OOM kill后内存释放延迟问题而设计的异步清理机制。当进程被OOM killer选中后,可能因自身处于不可中断状态而无法及时释放内存。OOM Reaper通过独立的内核线程异步扫描并回收受害进程的页表和物理页,避免系统因等待进程退出而陷入僵局,确保内存能快速回收,有效防止了OOM场景下的系统饥饿。
1小时前
[linux内存管理] 第 055 篇 OOM Killer 死亡名单算法
OOM Killer是Linux系统在内存耗尽时选择进程终止的机制。其核心算法oom_badness()通过三道过滤(排除init进程和内核线程、检查cpuset、排除正在终止的进程)和一个打分过程,为所有可终止进程计算“死亡分数”。分数基于进程的RSS、页面交换使用量等内存占用指标,最终选择最高分的进程作为牺牲者,以最大化释放内存并最小化系统影响。该设计体现了在极端内存压力下的平衡策略与工程智慧。