[linux内存管理] 第 057 篇 OOM Kill 与 panic_on_oom —— 杀人的艺术与崩溃的抉择 2周前 评论
[linux内存管理] 第 057 篇 OOM Kill 与 panic_on_oom —— 杀人的艺术与崩溃的抉择

本文深入解析Linux内核OOM(内存不足)处理机制的最终环节。核心内容包括:通过`oom_kill_process`函数处决选定的受害进程(victim),其流程涵盖检查进程退出状态、打印系统内存日志、处理cgroup组,并最终发送SIGKILL信号。同时,文章阐释了`panic_on_oom`参数的不同取值(0、1、2)如何决定系统在OOM时是终止进程还是触发内核崩溃,为系统管理员在稳定性与故障恢复间提供了关键的选择依据。

[linux内存管理] 第 056 篇 OOM Reaper:异步解除映射的幕后英雄 2周前 评论
[linux内存管理] 第 056 篇 OOM Reaper:异步解除映射的幕后英雄

OOM Reaper是Linux内核为解决OOM kill后内存释放延迟问题而设计的异步清理机制。当进程被OOM killer选中后,可能因自身处于不可中断状态而无法及时释放内存。OOM Reaper通过独立的内核线程异步扫描并回收受害进程的页表和物理页,避免系统因等待进程退出而陷入僵局,确保内存能快速回收,有效防止了OOM场景下的系统饥饿。

[linux内存管理] 第 055 篇 OOM Killer 死亡名单算法 2周前 评论
[linux内存管理] 第 055 篇 OOM Killer 死亡名单算法

OOM Killer是Linux系统在内存耗尽时选择进程终止的机制。其核心算法oom_badness()通过三道过滤(排除init进程和内核线程、检查cpuset、排除正在终止的进程)和一个打分过程,为所有可终止进程计算“死亡分数”。分数基于进程的RSS、页面交换使用量等内存占用指标,最终选择最高分的进程作为牺牲者,以最大化释放内存并最小化系统影响。该设计体现了在极端内存压力下的平衡策略与工程智慧。

[linux内存管理] 第 054 篇 OOM触发 + Memory Reserve + out_of_memory 决策 3周前 评论
[linux内存管理] 第 054 篇 OOM触发 + Memory Reserve + out_of_memory 决策

本文深入解析Linux内存管理中OOM(内存溢出)的触发机制与决策流程。文章聚焦于从内存分配失败到系统响应的关键链路,涵盖OOM触发的三条路径、作为最后防线的Memory Reserve(32页保留内存)机制,以及out_of_memory()全局入口的决策内幕。通过对核心数据结构oom_control及具体调用链的分析,揭示了内核在内存耗尽时如何从回收自救逐步走向进程查杀的全过程。

[linux内存管理] 第 053 篇 OOM 整体流程:从内存耗尽到系统崩溃的完整链路 4周前 1 条
[linux内存管理] 第 053 篇 OOM 整体流程:从内存耗尽到系统崩溃的完整链路

本文详细解析了Linux内核中OOM(内存不足)机制的完整处理流程。当系统内存耗尽且所有回收手段(如直接回收、kswapd、内存规整)均告失败后,内核会触发OOM处理。文章介绍了OOM的定位(回收失败后的最终策略)及其主要触发场景,包括全局内存不足和cgroup(memcg)内存限制等。核心在于系统必须决定是否终止进程、选择哪个进程作为牺牲者,以及在极端情况下是否触发系统恐慌。