omkillerLinux下的OOMKiller杀手(linuxpso)
OOM(Out of Memory)Killer是一种Linux系统中的内存管理程序, 是一种内存保护机制,它允许内核在系统内存资源耗尽时回收和杀死进程。原理就是当系统可用内存资源以及swap空间被占用完后,操作系统开始回收不再需要的或者消耗内存资源过大的进程以维持系统的稳定性。
OOMKiller的行为取决于系统所有进程消耗的内存,经过运算后可得到一个数字叫做内存压力(Memory Pressure),内存压力一旦超过系统定义的阈值,就会触发OOMKiller技术来杀掉消耗内存最多的进程。
通常OOMKiller会首先尝试终止一个叫死锁进程(又称无限等待进程),如果没有发现死锁进程,它会评估整个系统中所有进程消耗的内存,算出每个进程分配的内存压力,然后根据它们的级别来决定谁应该被杀掉。
为了可以调节kill_processes_oom_score函数中OOM阈值大小,我们可以使用内核参数/proc/sys/vm/oom_kill_allocating_task,这个参数最大可以设置到1000,例如:
echo 500 > /proc/sys/vm/oom_kill_allocating_task
数值越大,表示虚拟内存和物理内存的负荷越大,此时操作系统越早采取kill措施,反之,越宽松。
OOMKiller的存在对于保证Linux系统的内存管理和稳定性有着重要的作用,其他参数的调节也可以提高OOMKiller杀死进程的效果和正确性,总的来说,正确地设置和使用OOMKiller可以帮助Linux系统达到良好的内存管理。