计算机冻结几乎完整的RAM,可能是磁盘缓存问题

Modified on: Sat, 09 Jun 2018 21:03:53 +0800

我认为这个问题有点类似于这个线程。

如果启用或禁用交换无关紧要,只要实际使用的RAM量开始接近最大值并且磁盘缓存几乎没有空间,系统就会完全没有响应。

磁盘疯狂地旋转,有时候经过很长时间等待10-30分钟它会解冻,有时候不会(或者我没有用完)。有时如果我快速行动,我可以设法慢慢打开控制台并杀死一些ram吃的应用程序,如浏览器,系统几乎立即解冻。

由于这个问题,我几乎从未在交换中看到任何内容,有时只有几个MB,然后很快出现此问题。
我没那么受过教育的猜测是它以某种方式连接到磁盘缓存过于贪婪,或者内存管理过于宽松,所以当需要内存时,它不会足够快地释放并使系统匮乏。

如果使用加载在磁盘缓存中的延迟文件(500MB +)并且之后系统无法快速卸载它们,问题可以非常快地实现。

任何帮助或想法将不胜感激。

现在我必须生活在持续的恐惧中,当做某事时计算机可以冻结而且我通常必须重新启动它,如果它真的用完ram我会更喜欢它只是杀死一些用户空间应用程序,比较粗壮(最好是如果我能以某种方式标记哪个先杀死)

虽然这种错误是为什么在这种情况下不交换拯救我。

更新:
它没有挂一段时间,但现在我再次出现了几次。我现在一直在我的屏幕上保持ram监视器,当挂起时它仍然显示〜30%可用(可能由磁盘缓存使用)。
其他症状:如果我正在观看视频(VLC播放器),声音会先停止,几秒钟后图像会停止。当声音停止时,我仍然可以对PC进行一些控制,但是当图像停止时,我甚至无法移动鼠标,所以在等待一段时间后重新启动它。顺便说一下,当我开始观看视频但是在某个时间(20分钟)并且我当时没有主动做任何其他事情时,这并没有发生,即使浏览器和oowrite一直在第二个屏幕上打开。基本上某些东西只是决定在某个时刻发生并挂起系统。

根据评论中的请求,我在挂起后立即运行dmesg。我没有注意到任何奇怪的东西,但不知道要看什么,所以这里是:
 https://docs.google.com/document/d / 1iQih0Ee2DwsGd3VuQZu0bPbg0JGjSOCRZhu0B05CMYs /编辑HL = EN_US&安培; AUTHKEY = CPzF7bcC

最佳答案

要解决此问题,我发现您需要将以下设置设置为物理RAM总量的5%-6%左右,除以计算机中的核心数量:

sysctl -w vm.min_free_kbytes=65536

请记住,这是一个每核设置,所以如果我有2GB内存和两个内核,那么我只计算了1 GB的6%,并为了安全而增加了一些额外的内容。

这会强制计算机尝试保留这一数量的RAM,这样做会限制缓存磁盘文件的能力。当然它仍然试图缓存它们并立即将它们交换掉,所以你应该限制你的交换:

sysctl -w vm.swappiness=5

(100 =尽可能频繁地交换,0 =仅根据总需要交换)

结果是linux不再随机决定在观看时加载一个大约1GB的整个电影文件,并在这样做时杀死机器。

现在有足够的预留空间来避免记忆匮乏,这一直是问题所在(因为之前没有像以前那样冻结了)。

经过一天的测试 - 锁定消失了,有时会出现轻微的减速,因为内容会被更频繁地缓存,但如果我不必每隔几个小时重新启动计算机,我就可以忍受。

这里的教训是 - 默认内存管理只是一个用例,并不总是最好的,即使有些人试图建议不这样做 - 家庭娱乐ubuntu应该配置不同于服务器。


您可能希望通过将这些设置添加到/etc/sysctl.conf来永久保存这些设置,如下所示:

vm.swappiness=5 vm.min_free_kbytes=65536


相关问答

添加新评论