由于我有 128 GB RAM,因此我想通过设置vm.swappiness
为 10 来最大程度地减少交换使用量。
我在 Python 中运行了一系列snakemake -j 1
内存密集型操作:将两个数组相减,每个数组最大为 15 GB,然后计算差值的范数。令人惊讶的是,我的系统开始出现异常:Thunderbird 崩溃了,然后我的图形环境(带 lightdm 的 XFCE)也崩溃了,有效地终止了浴运行时的屏幕会话。现在我想知道:为什么?
此外,在处理最大的数组时,我的脚本往往会因分段错误而失败。此外,在图形环境重新生成后,它交换了我的显示器(双关语),并且不允许我使用显示设置重新交换它们。 service lightdm restart
之后sysctl vm.swappiness=60
是必要的。
我有足够的可用交换空间(932 GB),所以我的系统并不是突然内存不足。RAM 芯片似乎也可以工作(17 次 Memtest86+ 测试没有发现错误)。
我询问其他程序(Thunderbird、屏幕会话、图形环境)崩溃的原因。即使我的程序写得不好,我也希望它们的影响是有限的广泛交换。XFCE 会话完全重新启动是绝对不应该发生的事情。我所说的重新启动是指重新启动,而不是由于交换而冻结或减慢。
TL;DR:似乎没有。
问题出在交换分区上的坏块,这可能与交换性减少有关,也可能无关。有经验的人可能会告诉我,交换是否会影响磁盘磨损。
我已经成功地用 洗澡了
vm.swappiness=0
。4 小时前,我又开始洗澡vm.swappiness=10
- 到目前为止一切正常。如果系统开始出现异常(并且没有发现坏块),我将更新答案。