Linux内核如何处理低内存条件?
如何证明新内核能够很好地处理低内存条件?
有相同的标准测试吗?
发布于 2013-04-02 07:33:05
Linux使用OOM(Out Of Memory) Killer处理低内存条件。OOM杀手的策略是杀死一些或多个进程,允许分配进程获得所需的内存。
为了选择要终止的进程,OOM杀手计算了名为Badness的值。然后,选择最坏的过程来杀死它。如果选择了分配过程,OOM将终止其工作。如果选择了其他进程,则可以多次调用OOM杀手,以防以前运行的OOM杀手没有释放足够的内存。
被杀死的过程是以这样的方式选择的
我们可以使用/proc/sys/vm/overcommit_memory值配置OOM杀手
启发式内存过度提交(默认设置)地址空间的-Obvious过提交被拒绝
1-总是超额承付
2-禁用过提交-当overcommit_memory设置为2时,系统的总地址空间提交不允许超过物理内存的交换+可配置百分比(overcommit_ratio -default为50)。
要证明linux处理OOM,一种简单的方法是通过malloc和memset不断地分配内存,直到进程耗尽内存并被杀死(出现在dmesg中)。
内存不足的标准测试可以在Linux Test Project (LTP)中找到,可在LTP源Forge上找到。
这些测试可在ltp/testcase/内核/mem/oom中获得。
https://stackoverflow.com/questions/15757536
复制相似问题