内存不足,需要进行交换

内存不足,需要进行交换

我的电脑(运行 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 倍的时间......

相关内容