我在具有 4 GB RAM 和 4GB 交换空间的计算机上运行 Ubuntu Desktop 15.10。我对 Linux 的理解是,当它开始耗尽 RAM 时,它将开始杀死进程以恢复一些 RAM,并受此支持其他问题。
我观察到的是,当系统内存不足时,它就会冻结。鼠标和键盘输入停止工作。为了实验弄清楚内核是否会尝试从这种状态恢复,我让系统处于这种状态过夜,但它没有恢复。
桌面上的行为是否发生了变化?为什么系统不杀死应用程序以释放空间。是否有一些设置需要启用/禁用。
运行的应用程序非常标准,浏览器、邮件客户端、终端和音乐播放器等。
更新: 自由-m系统运行正常时的输出是:
total used free shared buffers cached Mem:
3271 3145 126 432 32 694
-/+ buffers/cache: 2418 853
Swap: 7503 1424 6079
我增加了交换空间(现在 7+ GB),以防止系统频繁冻结。
答案1
很难准确诊断发生了什么,因为我们没有任何真实的诊断信息。但内存是一种提供给需要它的进程的资源。如果系统不再有所谓的物理内存来提供请求,它还有一些选择。
典型的解决方案是使用交换区作为虚拟内存。然后,系统可能会进入一种在交换上旋转的状态,花费更多的时间来管理不断减少的内存以及将东西换入和换出,而不是其他任何事情。
但事情不会被冻结,内核仍然有自己的保留资源。但事情会非常缓慢。
不过,您所描述的情况有所不同。听起来系统进入了繁重的资源分配模式,然后冻结了。也就是说,不再有正在运行的内核,因此内核无法采取任何措施来减轻资源争用。
这可能表明存在硬件问题(尽管我认为这可能是内核错误)。也就是说,繁重的资源分配周期导致硬件故障。您可能只是遇到了内存条损坏或其他一些仅在重负载时才会出现的片状硬件问题。
我想现在大多数 Linux 系统在系统启动菜单中都有或者可以轻松获得 memtest 选项。您可以尝试一下,看看是否可以通过大量内存测试运行来重现它。
另一个数据点是查明系统是否以某种方式仍然存在。本地 GUI 可能被锁定或繁忙,但系统仍然能够响应 ping,甚至接受远程登录。下次发生这种情况时,请尝试从另一台主机访问该主机。即使回复 ping 或远程登录尝试的速度很慢,甚至达到超时的程度,如果系统完全没有响应,这将是不同的响应。
之前在另一个 SE 上已经介绍过这一点,这可能会使这个答案重复。如果是这种情况,模组应该随意删除这个。