我已经在 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 的可用空间。