首页 > Operation System > 关于linux的oom-killer

关于linux的oom-killer

2008年12月8日 哈哈 发表评论 阅读评论

这些天仔细了解了些关于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

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word