问题描述
-
交换分区的目的是什么?
-
我怎么知道我有足够的交换分区?不太多/太少。
我的Ubuntu PC用于典型的东西:
-
网络(电子邮件,脸书等)
-
一些电影
-
游戏很少见
最佳解决方案
交换分区有两个目的。
-
它用作’backup’ RAM。也就是说,如果您的计算机耗尽RAM,它将使用交换区域作为更多内存的临时源。更具体地说,它将’swap’未使用的项目从RAM进入交换区域,以便为当时需要它的应用程序留出备用空间。这并不理想,因为硬盘驱动器的数据传输速率明显低于普通RAM。实际上,这意味着从交换区域检索信息要慢得多。
-
它在计算机休眠时使用。休眠包括将RAM的图像置于其当前状态(如ISO表示图像),并将其保存到交换区域。然后在计算机重新启动时重新加载此图像。
-
最有用的是,交换区域应至少为(RAM * 1.5),但建议使用更多。例如,在我的3GB内存系统上,我的交换区域为7.2gb。
次佳解决方案
这与关于交换分区的“right”大小的this question非常接近。我的answer there中的大部分相同信息都适用 – 基本上,如果你想要休眠,你通常希望你的交换空间至少和你的RAM一样大,除此之外,像1或2 GB这样的数字就足够了。因为交换比RAM慢得多,如果你填满了几千兆字节的交换,你的计算机几乎肯定变得非常慢。
还没有真正需要交换分区 – 交换文件(在主流linux文件系统上可用)提供相同的性能,如果您认为自己没有足够的话,可以轻松添加更多的交换空间。
第三种解决方案
here有关swap的非常深入的信息
有人说你公羊的两倍,但我个人推荐这个:
swap = 1.5 X总Ram
示例:
如果你有2Gb的ram – > swap = 1.5 x 2 = 3
P.D:Ubuntu Desktop使用Swap进行休眠(PC关闭,无需电源,保存程序状态)。如果休眠对您很重要,请使用更多交换空间,然后使用ram + swap overflow。
第四种方案
free
命令可以告诉您正在使用的交换量。例如在这台机器上:
$ free -m
total used free buffers cached
Mem: 1947 1863 84 312 758
-/+ buffers/cache: 792 1154
Swap: 4000 3 3997
告诉我,我有2GB(1947m)RAM,系统已经使用了大部分内存。但是,312m用于I /O缓冲区,其余(758m)系统已决定填充磁盘缓存。
磁盘缓存很有意思,因为它的内容使用快速内存而不是慢速磁盘。内容可以从磁盘获取,但是在需要时它们会被保留。这也意味着有758m的内存可以在必要时立即回收,因为系统知道它可以在磁盘上找到该数据。
这就是为什么第二行显示如果没有缓冲和缓存,我可以使用一半的RAM(1154m)。
第三行显示我有一个过大的交换分区(它在那里,并没有做任何事情),其中使用了高达3米。这是内核实际上不希望很快就能使用的东西,因此它被卡在”back porch”上。
虽然free
现在为您提供快照,但vmstat
可以为您提供运行图片:
$ vmstat 10
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 3588 86236 316524 769132 0 0 14 13 126 81 4 1 95 0
0 0 3588 83872 316532 770512 0 0 0 20 264 1229 3 1 96 0
那里有很多信息,但感兴趣的是没有swap-in(si)或swap-out(so)流量。这意味着我在过去的10秒内根本没有使用交换。