内存满时系统几乎冻结

内存满时系统几乎冻结

我已经在 SSD 上使用 zram 或物理交换进行了测试。当内存使用率非常高时,例如内存泄漏,系统就会开始交换。

此时,top显示 10% IO 等待,每个 kswapd 占用 20% CPU。但是 SSD IO 非常高,即使没有物理交换。而且系统非常滞后。

这种情况只发生在内存快满的时候。在之前的 Ubuntu 版本中我从未发现过这种情况,直到一年前我更新到 Bionic,全新安装。

答案1

我遇到了同样的问题,我建议您将 swappiness 设置为 10。您当前的 swappiness 值是多少?

cat /proc/sys/vm/swappiness

默认值为 60,建议值为 10。还有很多指南。要更改它:

sudo vim /etc/sysctl.conf 

在最后添加一行:

vm.swappiness=10

这能彻底解决问题吗?不能!这只能减少交换量。但是,当系统已满时,您需要一些可用内存,为此,以下命令应可完成此工作(在同一个文件 /etc/sysctl.conf 中,设置 vm.swappiness 后):

vm.min_free_kbytes=65536

重启看看效果。如果还是不行的话请告诉我。

编辑:如果您有大量 RAM,我建议保留 500MB 的可用空间。

相关内容