Linux内核如何处理低内存条件?
我们怎样才能证明新内核能够很好地处理低内存条件?
是否有相同的标准测试?
答案 0 :(得分:9)
Linux内核使用OOM(Out Of Memory) Killer
处理内存不足的情况。
OOM杀手的策略是杀死一些进程或进程以允许分配进程获得它所需的内存。
为了选择要杀死的进程,OOM杀手会计算名为Badness
的值。然后它选择具有要杀死的最大Badness的进程。如果选择了分配过程,OOM将终止其工作。如果选择了其他一些进程,可以多次调用OOM杀手,以防OOM杀手的上一次运行没有释放足够的内存。
要杀死的过程是以
的方式选择的我们可以使用/proc/sys/vm/overcommit_memory
值
0-Heuristic memory overcommit (默认设置) - 明显过度使用 地址空间被拒绝
1 - 总是过度使用
2 - 禁用overcommit - 当overcommit_memory设置为2时,系统的总地址空间提交不允许超过物理RAM的swap +可配置百分比(overcommit_ratio -default为50)< / p>
证明linux处理OOM的一种简单方法是通过malloc连续分配内存并对内存进行memset,直到进程耗尽内存并被终止(显示在dmesg中)。
内存不足的标准测试可在LTP Source Forge
的Linux Test Project (LTP)
中找到
测试可在ltp / testcases / kernel / mem / oom
中找到