OOM排查与优化

OOM机制

        OOM指当程序占用内存超过系统内存或系统可调用的内存时,触发LINUX 内核机制(OOM killer),导致某些进程被kill掉;举个栗子,公司里同时有小明与小斌等若干员工,其中公司内部有一个打分机制,就是员工的干饭量(内存),本身公司是能负担所有员工,但这时小明与小斌尤为突出,突然之间干饭量孟增,为了保证公司不倒闭以及维持其他人能继续干饭,公司就通过这个干饭量进行打分,谁的分高就开除谁,然后发现,小明最能干饭,那么公司就把小明开了

OOM打分

       

         Linux内核有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽内核会把该进程杀掉。

        内核检测到系统内存不足、挑选并杀掉某个进程的过程可以参考内核源代码 linux/mm/oom_kill.c,当系统内存不足的时候,out_of_memory()被触发,然后调用 select_bad_process() 选择一个“bad”进程杀掉,判断和选择一个“bad”进程的过程由 oom_badness()决定,最 bad 的那个进程就是那个最占用内存的进程。

        这里附上一段源代码

        

/**

 * oom_badness -heuristic function to determine which candidate task to kill

 * @p: taskst
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值