2周前
[linux内存管理] 第 055 篇 OOM Killer 死亡名单算法
OOM Killer是Linux系统在内存耗尽时选择进程终止的机制。其核心算法oom_badness()通过三道过滤(排除init进程和内核线程、检查cpuset、排除正在终止的进程)和一个打分过程,为所有可终止进程计算“死亡分数”。分数基于进程的RSS、页面交换使用量等内存占用指标,最终选择最高分的进程作为牺牲者,以最大化释放内存并最小化系统影响。该设计体现了在极端内存压力下的平衡策略与工程智慧。
3周前
[linux内存管理] 第 054 篇 OOM触发 + Memory Reserve + out_of_memory 决策
本文深入解析Linux内存管理中OOM(内存溢出)的触发机制与决策流程。文章聚焦于从内存分配失败到系统响应的关键链路,涵盖OOM触发的三条路径、作为最后防线的Memory Reserve(32页保留内存)机制,以及out_of_memory()全局入口的决策内幕。通过对核心数据结构oom_control及具体调用链的分析,揭示了内核在内存耗尽时如何从回收自救逐步走向进程查杀的全过程。