交换分区大小以获取4GB RAM


27

我打算安装Ubuntu 9.04版本。我应该为交换分区分配多少空间。我记得在安装后背时将其设置为RAM大小的两倍。当时我的RAM是256 MB。所以我将交换分区设置为512 MB。

Answers:


15

我要说的是,确实有一个良好的经验法则。物理内存的2倍。这里可以考虑的一点是,虽然可以使用较小的交换分区,并且在大多数正常情况下已经足够,但是如果您希望该系统保持稳定,我确实会遵循8 GB的建议。实际上,我建议使用2 * RAM + 1 MB,这样绝对有空间换出2个完整的内存副本。这避免了可能对性能产生负面影响的“空壳游戏”场景。如果您的系统遇到异常事件,这将为您提供一定的恢复能力。

我已经看到了一些应用程序在无人值守的环境中表现不佳的场景,在不知不觉中,您的系统开始缓慢地进行爬网。

根据您的操作,您甚至可以完全放弃交换文件。一次运行多个应用程序时,操作系统的额外空间非常方便。但是,如果仅打算运行几个进程,则不打算与GUI交互,则禁用交换文件可能是适当的。

但是,如果您要使用交换文件,则始终使用下面的大小公式。

[(2 x  RAM) + 1 MB] = Swap File Size

我还建议您尽可能将交换文件放在单独的磁盘上,因为这样可以提高性能,因为操作系统可以在对数据磁盘进行读/写操作的同时交换数据。

我希望这是有帮助的。


1
您一直在说交换文件:这在Linux中很少见,通常交换是驱动器的一个单独分区,而不是另一个分区中的文件。
贾斯汀·史密斯

14

如果您有足够的RAM来执行要求的所有操作,那么Linux可以在没有交换的情况下非常愉快地运行,尽管进行一些交换仍然是一个好主意,因为在接近填充内存时,有时通过不最近推动一些操作,有时可以获得更好的性能。 -将用完的东西释放到磁盘上以释放RAM,以用作当前活动的IO操作的缓存/缓冲区。

同样,进行交换,无论您有多少RAM,如果应用程序出现异常情况并需要比平常更多的RAM,或者选择执行需要大量内存的异常操作,则确实可以提供一点额外的安全网。

总的来说,我不同意现代机器上的2xRAM。如果您有足够的能力来完成将价值8Gb的页面换出到磁盘,那么到那时,您的系统很可能已经完全无法使用了。在许多情况下,即使是1xRAM也会过大。请记住,您可以随时以文件的形式添加交换空间,因此,如果需要,可以稍后添加更多交换空间。例如,添加额外的GB交换空间:

dd if=/dev/zero of=/path/to/newfile bs=1024 count=1048576
mkswap /path/to/newfile
swapon /path/to/newfile

并将其删除(不再需要):

swapoff /path/to/newfile
rm /path/to/newfile

(请记住,尽管交换文件比直接交换分区或逻辑卷要慢一些,因为您有文件系统的开销,并且有更多的碎片可能性考虑)

休眠(即笔记本电脑/上网本)可能会使事情复杂化,因为IIRC Linux在交换空间中存储了内存状态,因此,如果您打算使用休眠方式,那么您肯定需要更多的RAM大小作为交换空间(而且我不知道是否这样)需要基于分区/卷的交换,或者是否可以使用基于文件的交换-肯定需要提到的fstab内容可以在启动过程的很早就看到,其中初始ram磁盘正在使用并且您的真实根尚未安装)。

这些观点可能都没有意义。如果您有数TB的磁盘存储空间,则分配8Gb交换空间可能会非常困难!


9

根据此处的Ubuntu SwapFAQ ,计算为2 * MB RAM。因此,在这种情况下为8GB。但实际上,您不应该需要超过2GB的空间。


是的 8 GB是足够的!
darthvader

5
将RAM的大小增加一倍似乎是多余的,尤其是在有更大的RAM的情况下-我有8GB,并且我看到使用1GB交换而不是16GB交换可以更好地工作,因为主内存中已经有足够的空间。
Andrew Scagnelli,2009年

@A正确-我提到现实的原因是您不需要2GB以上的内存。对此的计算很旧。但是,大多数在线文章早于2年。
BinaryMisfit

过去曾经说过,您不需要超过300MB的交换空间。现在,有了4GB的RAM,我在两个我从未使用过的不同磁盘中有两个1GB交换分区(将swappiness设置为10)。
旅行者

注意,我不在桌面上使用休眠/挂起。(即使那样,您也可以创建一个脚本在休眠之前创建交换文件,然后在唤醒时将其删除)。
旅行者

3

是否仍需要保留分区以进行交换?我认为如今,这也适用于系统分区上的文件。然后,我想如果您要插入更多的内存,或者您认为不需要那么多的交换空间,则可以轻松更改大小。

编辑是可以做到的(从linux 2.6内核开始)。


如今,它像Windows一样工作吗?我不知道 离开Linux很长时间了。
darthvader

您也可以使用tuxonice.net
旅行者

交换文件已经有一段时间了。交换分区的性能要好得多。
贾斯汀·史密斯

3

首先,如果要使用休眠模式,则需要一个交换分区,其大小至少应与RAM大小相同。

其次,请记住RAM的大小是2的倍数,而不是 10的倍数,因此声明2条512MiB RAM(每个536870912 bytes)的1GB空间是不够的,因为这仅是1000MB(1000000000字节),而不是1024MiB(1073741824 bytes)需要...相反,您需要带一个计算器,然后做1024 * 1024 * 1024 * # of GiB

另请阅读: http://en.wikipedia.org/wiki/Binary_prefixman 8 units在您的Linux机器上

因此,对于4 GB的RAM,您的交换空间至少应为4294967296 bytes4295 MB使用所有功能。

因为这很大,所以它可能足以满足您的所有需求


1
不需要交换分区即可挂起。您可以简单地使用交换文件(挂起之前不需要存在)。superuser.com/questions/21020/…–
旅行者

1

从我在Linux上的亲身经历,我知道传统的RAM大小的2倍公式仅适用于具有1 GB-2 GB RAM的旧系统。

但是,对于具有更多Gig RAM的较新系统,我建议以下内容

如果RAM <2 GB,则交换空间= 2 x RAM

如果RAM = 2 GB-8 GB,则交换空间= RAM

即使在运行高性能计算和应用程序时,这也不会对系统性能产生任何影响。

尽管如果内存至少为4 GB,我建议使用原始的RAM量。那应该保持系统稳定和高效。

如果RAM = 8 GB-64 GB,则交换空间= 0.5 x RAM

在这种情况下,我建议使用最大4 GB的RAM,因为这已经足够了,除了多媒体应用程序。


内存到交换大小功能在2 GB和8 GB时是不连续的。这意味着至少在不连续的一种尺寸上是“错误的” ...
einpoklum-恢复莫妮卡

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.