免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6180 | 回复: 5

关于OOM的问题 [复制链接]

论坛徽章:
0
发表于 2012-04-24 16:47 |显示全部楼层
一种极端情况下,在发生缺页中断的时候,没有多余的物理内存了,swap也满了,也没有可回收的内存。
这个时候一般就会触发OOM了。

可是如果不启用OOM机制,这种情况如何处理?是反复触发缺页中断导致系统异常挂起吗?
不启用OOM的坏处有哪些?

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
发表于 2012-04-24 17:07 |显示全部楼层
回复 1# allen303allen


曾经写过一个测试程序,http://blog.csdn.net/woshixingaaa/article/details/6937255,在这个文档最下边

是否可以不把OOM的代码编译进内核,我在源码目录下的.config文件中没有找到对OOM的CONFIG.

如果可以关闭OOM功能,那么你写个测试程序试试,看会发生什么结果!


   

论坛徽章:
0
发表于 2012-04-24 22:17 |显示全部楼层
有意义吗,人家已经有了处理办法,你非得不用

没内存会怎么样,所有东西都停滞呗,走到没内存就睡眠里去了呗

回复 1# allen303allen


   

论坛徽章:
14
水瓶座
日期:2014-06-10 09:51:0215-16赛季CBA联赛之江苏
日期:2017-11-27 11:42:3515-16赛季CBA联赛之八一
日期:2017-04-12 14:26:2815-16赛季CBA联赛之吉林
日期:2016-08-20 10:43:1215-16赛季CBA联赛之广夏
日期:2016-06-23 09:53:58程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-09 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-25 16:40:3515-16赛季CBA联赛之广夏
日期:2015-12-22 09:39:36程序设计版块每日发帖之星
日期:2015-08-24 06:20:002015亚冠之德黑兰石油
日期:2015-08-07 09:57:302015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2012-04-25 13:19 |显示全部楼层
没有就卡死呗,你任何操作都做不了

其实内核的OOM并不一定好,根据分数杀进程,不一定能杀到真内存泄漏那个

还不如在OOM的直接复位好了

论坛徽章:
0
发表于 2012-04-25 14:43 |显示全部楼层
unbutun 发表于 2012-04-24 22:17
有意义吗,人家已经有了处理办法,你非得不用

没内存会怎么样,所有东西都停滞呗,走到没内存就睡眠里去 ...


我只是想看看现在的内核在关闭OOM时是怎么处理的。

但是我没有找到关闭OOM的方法,网上搜到的都是# echo “0″ > /proc/sys/vm/oom-kill 这样的方法,但我看的内核版本里(2.6.32之后的)proc下都没有这个oom-kill了,在代码里也没有找到相关的处理,是现在的内核把关闭OOM的处理去掉了吗?

因为在memory cgroup的控制下,是可以对控制组内的进程关闭OOM机制的,此时如果没有内存,则会将该进程放到一个等待队列中,等有足够内存的时候再激活该进程,此过程中其他进程都是正常的。

我也看到很多资料上说,对于内核来说,关闭OOM会导致整个系统的挂起,后果比kill掉某个进程更加严重。所以想看看这种情况到底是如何处理的。它不能像mem cgroup那么处理的原因是什么。

我想,这还是有一些意义的吧。

论坛徽章:
0
发表于 2012-04-26 18:48 |显示全部楼层
虽然还是没找到关闭oom的方法(可能真的去掉了),但另一个问题已经得到答案了,memory cgroup统计和限制的还只是用户应用程序使用的内存,所以在cgroup内没有内存可分配的时候可以直接让进程等待。但全局oom处理的可能是各种情况的内存请求,比如可能发生在中断上下文,此时是不能等待的,所以系统的oom处理机制就没什么办法了,关闭oom的后果可能就只能让需要内存的进程独占cpu然后反复申请,最终导致系统挂起。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP