内存交换开始后,18.04 和 ThinkPad R61 上的长时间冻结是否正常?

内存交换开始后,18.04 和 ThinkPad R61 上的长时间冻结是否正常?

我有一台装有 Ubuntu 18.04 的联想 R61 Thinkpad。它有 4GB 内存、三星 SSD 860 EVO 500GB(带 9GB 交换分区)、Core™2 Duo CPU T7500 @ 2.20GHz × 2 和 Intel® 965GM (CL) 显卡。

我开始使用内存占用很大的软件(如 GIMP 或 Google Map)一段时间后,突然间交换开始,系统冻结,硬件 LED 灯不断闪烁。时钟有时超过 20 到 30 分钟不会前进,有时它会崩溃,屏幕空白,然后自行重启。我不认为它用完了所有 9GB 交换空间。

我尝试自己研究解决这个问题,但到目前为止,网上的所有建议都失败了。以前,它使用的是金士顿 SSD,后来我了解到它与 Linux 的固件存在问题,所以我换成了三星 SSD。但冻结问题仍然存在。

这是正常现象吗?因为我的硬件太旧或有故障?还是我的软件配置或设置不正确?我应该从哪里开始进一步查找?

非常感谢。

附言

这是我将交换分区更改为 32GB 后的输出。 在此处输入图片描述

这是我使用了一些内存之后的另一个。 在此处输入图片描述

进一步测试后更新。

我想我可能已经找到了冻结的原因。随着 32GB 交换分区的增加,如果我在 GIMP 中打开大量图像并大量使用 Googlemap,内存使用量将上升到 3.6GB,交换使用量将上升到 4.1GB,系统变得迟缓,鼠标移动变得不流畅。但它不会冻结。但是,如果我用图片查看器在里面文件(nautilus) 双击图像(可能在打开多个图像后),系统会冻结,无论是否出现空白屏幕。昨晚,系统出现空白屏幕,并在冻结 5 到 10 分钟后注销。我以为是重新启动,但从正常运行时间来看并非如此。

今天早上,内存使用率为 3.1GB,交换使用率为 3.2GB,双击文件中的图像后,屏幕空白了近 2 个小时,我不得不手动重新启动它。其他图像查看器不会导致冻结。如果我记得过去发生过冻结,只有图像查看器会以某种方式触发此冻结。如果内存使用量较少,我认为不会发生这种情况。

那么,有没有办法可以捕捉打开图像查看器时后台发生的快照,以便我可以将其转发给图像查看器程序员进行审查。该程序可能有错误。

谢谢。

答案1

从更新来看,我倾向于更改您的swappiness值,因为它会导致磁盘缓存不足。Ubuntu 安装的默认值为 60,除非您正在运行服务器或拥有大量 RAM,否则这是一个不错的数字。但是,由于每个系统和每个配置都略有不同,因此最好从测试解决方案。

首先改变swappiness现有值:

sudo sysctl vm.swappiness=60

此值将在下次重新启动时重置10。如果您注意到系统在设置为60(或任何其他值)后性能更好,您可以像这样将其永久保留:

  1. 打开终端(如果尚未打开)
  2. 以 root 身份编辑sysctl.conf文件:
    sudo vi /etc/sysctl.conf
    
    笔记:随意使用你喜欢的任何文本编辑器。vi这里的使用更多的是肌肉记忆,而不是明确的认可。
  3. 找到vm.swappiness并设置为最适合您的值
  4. 保存文件并应用更改:
    sudo sysctl -p
    

稍微有点vm.swappiness...

值为swappiness10 并不意味着只有当 RAM 剩余 10% 时才会交换数据。最好将其视为从缓存中窃取页面与交换页面以提供内存的“优先比率”。较低的值将强烈倾向于从缓存中窃取页面,而较高的值将强烈倾向于将页面交换到磁盘。系统通常会忽略此设置,直到内存几乎完全使用,并且内核被迫决定如何释放部分内存以供其他进程使用。

上述解释中提到的缓存是磁盘缓存,因此减少的值swappiness,可以增加进程不被交换出内存的机会。这也会减少系统可用的磁盘缓存总量,从而导致对 SSD 的读写速度比需要的慢得多。因此,此设置对系统实际性能的影响并不像许多人想象的那样是二维的。

对于任何给定系统,没有“神奇公式”可以确定正确的数量swappiness,因此可能需要进行一些尝试和错误。话虽如此,60对于运行桌面的绝大多数人来说,许多基于 Debian 的操作系统附带的默认设置似乎是一种很好的平衡。

我希望这能为您提供所需的更可靠的系统。

相关内容