我在很多地方看到一个经验法则,即交换空间应该是物理内存的两倍。然而,32 GB 看起来确实很多。我需要那么多吗?在有这么大量的物理内存的情况下,我是否需要它?
Amount of RAM Recommended swap space Recommended swap space
in the system if allowing for hibernation
-------------- -------------------------- ---------------------------
⩽ 2 GB 2 times the amount of RAM 3 times the amount of RAM
> 2 GB – 8 GB Equal to the amount of RAM 2 times the amount of RAM
> 8 GB – 64 GB At least 4 GB 1.5 times the amount of RAM
> 64 GB At least 4 GB Hibernation not recommended
Amount of RAM in the System Recommended Amount of Swap Space
4GB of RAM or less a minimum of 2GB of swap space
4GB to 16GB of RAM a minimum of 4GB of swap space
16GB to 64GB of RAM a minimum of 8GB of swap space
64GB to 256GB of RAM a minimum of 16GB of swap space
256GB to 512GB of RAM a minimum of 32GB of swap space
啊,这篇帖子上的答案都太错了,在谷歌搜索“多少交换空间”时,这个帖子居然排在前面。
首先,一个很好的参考点是Ubuntu Swap FAQ
这个FAQ提到了一个重要的观点,但是没有人在这里提到(我强调一下)
所以,交换不仅仅是为了休眠!这种活动,即交换未使用的页面,在某些情况下可能有益,但在其他情况下可能有害。有益之处在于它可以释放内存供系统在其他地方使用,但当交换过于激进时,会交换出您实际上想要的页面,这对于桌面系统尤其如此,因为应用程序可能长时间处于空闲状态,但用户仍然希望在将其重新启动时立即获得性能。控制这个过程的侵略性被称为“swappiness”。有时候,一个大型程序(比如OpenOffice、Neverwinter Nights或者视频编辑器)会让整个系统需要额外的内存。这些大型程序在启动过程中使用的页面中,有相当一部分只用于初始化,之后就再也不会被使用了。系统可以将这些页面交换出去,为其他程序甚至磁盘缓存释放内存。在这些情况下,交换空间将被用来帮助系统处理额外的负载。
内存消耗型程序 有时,一个大型程序(如LibreOffice、Neverwinter Nights或视频编辑器)会使整个系统需要额外的内存。这些大型程序在启动过程中使用的许多页面可能只用于初始化,然后再也不会被使用。系统可以将这些页面交换出去,并为其他程序甚至磁盘缓存释放内存。在这些情况下,交换空间将被用来帮助系统处理任何额外的负载。
休眠(挂起到磁盘) 休眠功能(挂起到磁盘)在关闭计算机之前将RAM的内容写入交换分区。因此,您的交换分区应该至少与RAM大小相同。目前在Ubuntu中使用的休眠实现swsusp需要一个交换或挂起分区。它无法使用活动文件系统上的交换文件。
无法预料的情况 无法预料的事件可能会发生(程序失控,某些操作所需空间超出预期,或其他不可预测的事件组合)。在这些情况下,交换空间可以给你额外的延迟时间来弄清楚发生了什么,或者完成你正在进行的工作。RAM(GB) No hibernation With Hibernation Maximum 1 1 2 2 2 1 3 4 3 2 5 6 4 2 6 8 5 2 7 10 6 2 8 12 8 3 11 16 12 3 15 24 16 4 20 32 24 5 29 48 32 6 38 64 64 8 72 128 128 11 139 256
round(sqrt(RAM))
和2*RAM之间(对于128GB RAM系统来说,介于11GB和256GB之间)。内存越大的系统越难计算出“最佳值”。如果我抄袭你回答中的一些想法(即“测试它”),你介意吗? - Fabby