我的电脑(运行 Ubuntu 16.04)有 8GB 内存和 8GB 交换空间。当我使用电脑时,由于内存不足,电脑最终会死机。当没有剩余内存时,我该如何让它在交换空间上工作?
输出为free
:
total used free shared buff/cache available
Mem: 7.7G 3.1G 132M 692M 4.4G 3.5G
Swap: 7.9G 0B 7.9G
答案1
很多人不理解swap的本质:很慢!
对于具有 DDR3 1600 内存的旧机器:
- 内存传输速率为12800 MB/s,
- HDD 速率约为 100-200 MB/s,
- SSD 速率最高为 600 MB/s
因此,如果内存压力过大以致于交换使用频繁,则一切仍将正常工作,但由于交换速度不到正常内存的 1/1000,因此速度会大大减慢。
在日常生活中,swap 可以帮到我们的地方在于,如果你正在运行多个程序,那么不常用的程序可以被换出但仍保留在系统中。你只需等待 2-3 分钟,让不常用的页面进入 swap,然后你就可以使用当前的应用程序而不用费太多力气。而且在许多情况下,不常用的页面永远不会再换回来,因此不会有进一步的惩罚。
但是当你谈论模拟时,这意味着你的数据是巨大的,并且交换进/出活动将会频繁,看起来你的系统正在冻结,因为超过 99.9% 的 CPU 时间都处于不可中断的 iowait 中。
因此,解决你的问题的方法是:
- 购买更多 RAM
- 要有极大的耐心,用你当前的设置等待 1000 倍的时间
- 添加 SSD 并仍然需要很大的耐心并等待 100 倍的时间......