OOM_Killer

OOM Killer

一、什么是OOM Killer

程序运行的空间局部性决定一段时间内执行的代码段比较集中,任何时候并不需要加载所有数据到物理内存。

操作系统把进程所需的内存空间按页进行管理/加载,通过虚拟页和物理页的映射可以实现:

  • 同时运行多个程序,他们各自拥有独立的虚拟内存地址。

  • 单个程序可以只加载当前用到的数据到物理内存。

二、什么时候触发

当所有运行程序所需的虚拟内存超过物理内存阈值时,linux内核会通过oom killer会选择oom_score大的进程杀掉,并且不会产生warn。通过cat /proc/{pid}/oom_score查看进程oom_score。

三、相关日志

  1. grep kill /var/log/messages

  2. dmsg -T | grep kill

参考

  1. Linux 的 OOM Killer 机制分析

  2. how-to-diagnose-oom-errors-on-linux-systems

  3. man-page/dmesg

评论