2013-04-02 62 views

回答

9

Linux内核使用OOM(Out Of Memory) Killer处理低内存条件。 OOM杀手的策略是杀死一些进程或进程以允许分配进程获得所需的内存。

为了选择一个杀死进程,OOM杀手计算出名为Badness的值。然后它选择最大Badness被杀死的进程。如果选择分配过程,OOM终止其工作。如果选择了其他进程,那么在OOM杀手的上一次运行没有释放足够内存的情况下,可以多次调用OOM杀手。

的方法被杀死被选择在

  • 根进程没有中止这样的方式。
  • 我们失去了最低工作量。
  • 我们恢复了大量的内存。
  • 我们想要杀死最少量的进程(一个)。
  • 我们试图杀死用户期望我们杀死的进程,此算法已经过精心调整,以满足最少突击的原则。

我们可以使用/proc/sys/vm/overcommit_memory

0启发式内存过量使用(默认设置)的 地址空间-Obvious overcommits配置OOM杀手被拒绝

1 - 始终过量使用

2-Disable overcommit - 当overcommit_memory设置为如图2所示,总地址空间提交的系统不允许超过互换+配置百分比的物理RAM

一个简单的方法来证明的Linux处理OOM是通过malloc和memset的连续分配存储器的(overcommit_ratio -default是50)内存直到进程耗尽内存并被杀死(出现在dmesg中)。

为内存不足

标准测试可以在可用Linux Test Project (LTP)发现在LTP Source Forge

测试是在LTP可用/测试用例/内核/ MEM/OOM

+0

谢谢..这是您的最终有很大的帮助,,谢谢.. – Happy

+0

谢谢Harshitha。你是否知道在需要(内存)时是否有任何交互方式在桌面模式下终止选择过程? – Henry