注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

widebright的个人空间

// 编程和生活

 
 
 

日志

 
 

Linux OOM killer 相关资料  

2011-09-07 20:19:12|  分类: 程序设计 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

客户的linux服务器上出现了个OOM  killer问题了。现在还找不到原因。找了一下相关资料。

OOM  Killer (out of memory) 其实是内核里面的一个机制,就是系统内存不足的时候,系统就会启动这个机制企图回收物理内存。他这个算法就会尝试自己去选一个进程,然后kill掉。企图释放内存。但他自己选的方法可能导致选中的进程很随机,然后某些关键进程也可能被杀掉,就会导致很严重的问题了,客户的那个机器就是关键管理服务进程被杀,然后系统无法通讯就自己nmi退出了。其实他这个oom killer 也是能够保证一定有用,所以很多时候他一直不停的kill进程,但还有没有内存回收,最后只能重启系统了。

内核相关的代码是在 __alloc_pages 发现没有内存的时候,就调用out_of_memory 函数,这个函数里面就调用oom_badness  去选一个进程,谁不幸被选中了就只能被kill掉了。

其实他的算法还是尝试比较智能的去选的,而且新的内核,还可以通过/proc/<pid>/oom* 这些文件去配置优先级的,好像还有一个配置所有进程优先级的办法,自己参考一下后面的文档吧。可以通过配置 /etc/sysctl.conf  禁用掉oom功能或者overcommit的相关属性的。

网上找到比较有用的文档有:

Taming the OOM killer   http://lwn.net/Articles/317814/

Respite from the OOM killer  http://lwn.net/Articles/104179/

怎么解决OOM问题  http://www.redaht.com/archives/redhat-list/2007-August/msg00060.html

Linux下OOM Killer机制详解   http://blog.dccmx.com/2011/04/oom-killer-on-linux/

Linux OOM Killer Algorithm and Implementation  http://www.unixresources.net/linux/clf/linuxK/archive/00/00/61/02/610219.html

在一个叫xiwang的broadcom公司的演示文档里面,有这张图,说了linux内存分配的一些相关函数,也比较有参考价值吧

Linux OOM killer 相关资料 - widebright - widebright的个人空间

 


现在还找不到问题的原因,不知道是不是我们的内核模块有内存泄漏导致的,同事怀疑内存污染了slab或者伙伴系统的list导致的,
打算看一下这两个资料,然后再研究代码看看。
"Understanding the Linux? Virtual Memory Manager"  13 OUT OF MEMORY MANAGEMENT
 Understanding the Linux Kernel, 3rd Edition  内存相关的几章

 

  评论这张
 
阅读(1612)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017