细说|Linux Out Of Memory机制

原文约3900字,阅读约需10分钟。发表于:

有时候我们可能会碰到系统中某个进程突然挂掉的情况,查看系统日志后发现是由于系统的 OOM(Out Of Memory)机制 触发导致的。

OOM(Out Of Memory)机制是指当系统内存不足时,系统采取的应急措施。Linux内核会尝试回收可回收内存,如页缓存和延迟释放的空闲内存页。如果仍然不足,会触发OOM killer,杀掉占用内存最多的进程。OOM killer通过选择最坏的进程并调用oom_kill_process函数来实现。进程的最坏分数值是通过oom_badness函数计算的,包括进程使用的物理内存和oom_score_adj值。可以通过设置oom_score_adj值为-1000来禁止进程被OOM killer杀掉。

相关推荐 去reddit讨论