一个简单分配内存的试验程序通常只是因为一些简单的signal而终止,而不会触发OoM科学之子 写了: 好像没什么影响OOM的设置...
我是先获取i386版的vm目录文件列表,然后用这个列表分别在两个系统的vm目录执行md5sum
没发现有什么异常的不同
还有一个可能很重要?的不同就是发生kill的是4.x内核
没发生kill的是3.x内核
(困了,具体版本懒得纠结了)
难道连OOM机制都调整了?
OoM发生的时候系统一般都会卡上一段时间,然后log里会有很多关于OoM的信息
一个简单分配内存的试验程序通常只是因为一些简单的signal而终止,而不会触发OoM科学之子 写了: 好像没什么影响OOM的设置...
我是先获取i386版的vm目录文件列表,然后用这个列表分别在两个系统的vm目录执行md5sum
没发现有什么异常的不同
还有一个可能很重要?的不同就是发生kill的是4.x内核
没发生kill的是3.x内核
(困了,具体版本懒得纠结了)
难道连OOM机制都调整了?
又试了一遍,简单的程序如果开一个不行,多开几个就会OOMrosynirvana 写了:一个简单分配内存的试验程序通常只是因为一些简单的signal而终止,而不会触发OoM科学之子 写了: 好像没什么影响OOM的设置...
我是先获取i386版的vm目录文件列表,然后用这个列表分别在两个系统的vm目录执行md5sum
没发现有什么异常的不同
还有一个可能很重要?的不同就是发生kill的是4.x内核
没发生kill的是3.x内核
(困了,具体版本懒得纠结了)
难道连OOM机制都调整了?
OoM发生的时候系统一般都会卡上一段时间,然后log里会有很多关于OoM的信息
您说此处所说的"log"指的是dmesg?rosynirvana 写了:看到log里有oom-killer那就是了
代码: 全选
Linux debian 4.5.0-0.bpo.1-686-pae #1 SMP Debian 4.5.1-1~bpo8+1 (2016-04-20) i686 GNU/Linux
试了一下4.1、4.4、4.5,感觉情况差不多。科学之子 写了:楼主试试看把内核升级到4.5?4.5OOM很快发生,不知道是否是Bug,即使我设置了充足的swap,也还是会很快OOM代码: 全选
Linux debian 4.5.0-0.bpo.1-686-pae #1 SMP Debian 4.5.1-1~bpo8+1 (2016-04-20) i686 GNU/Linux
viewtopic.php?f=122&t=477954
这个就是(多数)Windows用户和(多数)Linux用户的观念差别了。惹了麻烦,一个怨机器,一个自认倒霉。rosynirvana 写了:怎么还是想不开
主要工作进程被系统kill了岂不是丢数据?为什么还会希望它发生?
求教为什么我升级为4.5就很快OOM?rosynirvana 写了:怎么还是想不开
主要工作进程被系统kill了岂不是丢数据?为什么还会希望它发生?
wtz 写了:试了一下4.1、4.4、4.5,感觉情况差不多。科学之子 写了:楼主试试看把内核升级到4.5?4.5OOM很快发生,不知道是否是Bug,即使我设置了充足的swap,也还是会很快OOM代码: 全选
Linux debian 4.5.0-0.bpo.1-686-pae #1 SMP Debian 4.5.1-1~bpo8+1 (2016-04-20) i686 GNU/Linux
viewtopic.php?f=122&t=477954
另外,注意到:如果在tty下运行测试程序,malloc很快就会失败,同时硬盘也不会狂转;而图形界面下,除了测试程序外,还有很多进程处于活动状态(甚至要求分配内存),此时如果磁盘缓存区太小,kswapd0就会高负荷运行(在htop中能看到kswapd0的CPU使用率较高),导致硬盘卡死。
所以,解决问题的直接办法还是限制磁盘缓存的最低大小。强烈要求内核参数中添加这一选项。
首先我没看出这为什么是自认倒霉,之前我也没见过哪个windows用户认为,没内存的时候系统应该把自己主要工作进程杀掉,让自己丢数据wtz 写了: 这个就是(多数)Windows用户和(多数)Linux用户的观念差别了。惹了麻烦,一个怨机器,一个自认倒霉。
直接kill确实不太合适,但也不能无止尽地允许任何内存分配请求。所以在分配内存的算法上还需要进一步提高。
磁盘缓存还是应当保留一部分供系统关键进程进行应急响应,所以有必要在内核参数中增加一个最小值选项。
可能性太多了科学之子 写了:求教为什么我升级为4.5就很快OOM?rosynirvana 写了:怎么还是想不开
主要工作进程被系统kill了岂不是丢数据?为什么还会希望它发生?
LXDE环境,内核限制为224M内存,开启200%的zram,iceweasel开个天气预报网页就OOM
3.16就没有发生这类现象,最多只是系统很卡,但没有死机.
thank~!rosynirvana 写了:可能性太多了科学之子 写了:求教为什么我升级为4.5就很快OOM?rosynirvana 写了:怎么还是想不开
主要工作进程被系统kill了岂不是丢数据?为什么还会希望它发生?
LXDE环境,内核限制为224M内存,开启200%的zram,iceweasel开个天气预报网页就OOM
3.16就没有发生这类现象,最多只是系统很卡,但没有死机.
例如memmap设置的内存地址冲突了之类的
mem=nn[KMG] [KNL,BOOT] Force usage of a specific amount of memory
Amount of memory to be used when the kernel is not able
to see the whole system memory or for test.
[X86] Work as limiting max address. Use together
with memmap= to avoid physical address space collisions.
Without memmap= PCI devices could be placed at addresses
belonging to unused RAM.
我承认我没有研究过内核的代码,但是这不代表我所说的都是”猜测“,没有根据。rosynirvana 写了:首先我没看出这为什么是自认倒霉,之前我也没见过哪个windows用户认为,没内存的时候系统应该把自己主要工作进程杀掉,让自己丢数据wtz 写了: 这个就是(多数)Windows用户和(多数)Linux用户的观念差别了。惹了麻烦,一个怨机器,一个自认倒霉。
直接kill确实不太合适,但也不能无止尽地允许任何内存分配请求。所以在分配内存的算法上还需要进一步提高。
磁盘缓存还是应当保留一部分供系统关键进程进行应急响应,所以有必要在内核参数中增加一个最小值选项。
然后下面两句话有多少是你猜的?
允许任何内存分配,也就是vm.overcommit_memory = 1,我确实不知道哪个发行版默认用这个,只有用作特殊用途的机器会这么设置
Linux当然会预留一部分内存用于基本维护,另外也会预留一部分内存让用户控件申请内存时能够迅速处理