关于linux的oom-killer
这些天仔细了解了些关于linux的oom(out of memory)-killer机制的知识
赶紧记下来,否则又忘了:)
32位系统的机器
内存分DMA、LowMem和HighMem三部分
# DMA: 0×00000000 – 0×00999999 (0 – 16 MB)
# LowMem: 0×01000000 – 0×037999999 (16 – 896 MB) – size: 880MB
# HighMem: 0×038000000 –
LowMem区(NORMAL ZONE)一共880M,除非当用Hugemem的kernel的时候4G内存都是LowMem区
系统出oom-killer问题主要是因为LowMem内存太少或者是碎片太多,当系统进程请求不到合适的内存区域的时候
就会调oom-killer
在2.4的kernel下,貌似oom-killer会kill掉最新的进程;而2.6的kernel下,则会kill掉占用内存最多的那个进程,而且如果有共享内存的话,相关的进程都会被kill掉
下面再谈解决方法
最好的解决方法是
1,升级到64位系统,这样的话所有的内存都会被认为是LowMem
2,使用hugemem的kernel,这样的话,最多有4G的内存可以被认为是LowMem
3,as4的话有个参数vm.lower_zone_protection
# echo “250″ > /proc/sys/vm/lower_zone_protection
add the following to /etc/sysctl.conf:
vm.lower_zone_protection = 250
原创文章,转载请注明: 转载自嘻嘻哈哈的部落格(blog)
本文链接地址: 关于linux的oom-killer


最近评论