因为我有 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 芯片似乎也能正常工作(Memtest86+ 的 17 次测试未发现任何错误)。
我询问崩溃的原因其他程序(Thunderbird、屏幕会话、图形环境)。即使我的程序写得不好,我也希望它们的影响仅限于广泛的交换。XFCE 会话完全重启是绝对不应该发生的事情。我说的重启是指重启,而不是由于交换而导致的冻结或减速。
答案1
总结:看来并非如此。
问题出在交换分区的坏块上这可能与降低 swappiness 有关,也可能无关。经验丰富的人可能会告诉你 swappiness 是否会影响磁盘磨损。
我已经成功地用 洗了澡vm.swappiness=0
。4 小时前,我开始用 洗另一次澡vm.swappiness=10
- 到目前为止一切正常。如果系统开始出现故障(并且没有发现坏块),我会更新答案。