[kde-china] Re: 监视器中CPU占有率的disk sleep是什么意思?

pansz pan.shizhu在gmail.com
星期三 四月 27 03:20:37 CEST 2011


2011/4/27 Shen Miren <dickeny在gmail.com>:
> 疑惑:
> 1、内存即将耗尽时,kernel是在压榨更多内存么?
> 2、假设是在压榨内存,为啥硬盘灯会狂闪?(swap已经关闭)
> 3、内存爆掉,kernel为啥不去kill大户,而是kill新程序?(这根本不能解决桌面环境上的情况,应该去kill FF之类的)
> 目前感觉,依靠kernel获得较好的桌面体验,根本不靠谱。。。

我的测试表明,新分配内存被写入时,产生实际的内存需求,此时如果这个需求无法被满足,则导致该进程被 kill 。

对于 kernel 来说,认为出问题的是你,是你无法使用内存了,所以你必须被 kill。

而必须被 kill 的原因也很正常,malloc 没有返回
NULL,你的内存区域看起来是可用的,但是当你写入这个内存的时候,产生了实际的内存需求,而此时你这个程序自身已经无力解决这个问题(因为你根本不知道正常malloc分配来的内存还可能写失败),只能由
kernel 把你干掉。

也许与具体的内核配置有关系,在我的测试机器上分配100M也可以造成被kernel干掉。但这只是个数量大小问题。无关原则。

我这只能回答你的疑惑3。而且,毕竟linux内核本来就不是为桌面设计的。

至于疑惑1与疑惑2,暂时不清楚,你可以看看内核代码搞清楚它在做什么。


关于邮件列表 kde-china 的更多信息