如果我有32GB的RAM,我的交换空间应该是多少?

我对Linux还很陌生,想在一台有32GB内存的电脑上安装Ubuntu。我已经阅读了很多关于建议交换空间大小的文章,但没有针对我这种内存容量的信息。有人可以帮助我吗?非常感谢你们的时间!
感谢大家的回答。我对交换空间的问题有了更好的理解。有些回答说这也取决于其他规格。如上所述,我有32GB内存,1TB固态硬盘(主驱动器),2TB普通硬盘和i7处理器。我只进行日常任务,没有服务器或渲染。目前,我认为我将不使用休眠功能。

1非常依赖于使用和个人偏好。 - mikewhatever
4我强烈推荐阅读这个非常相似的问题的答案:http://askubuntu.com/questions/49109/i-have-16gb-ram-do-i-need-32gb-swap?rq=1 还有另一个在superuser上的问题:http://superuser.com/questions/777907/swap-partition-size-on-a-64-gb-ram-computer-for-memory-intensive-work - childofsoong
4个回答

如果您希望休眠功能正常工作,它必须将所有内容保存在RAM中,并存储到交换空间,以便在计算机再次开启时可以恢复,因此您至少需要32GB的交换空间。

如果您不关心休眠功能,除非您计划经常使用超过32GB的内存,目前4GB或8GB这样的较小容量就足够了。交换空间可以稍后调整大小。


如果32GB已经满了并且我们已经交换了一些东西,那么它是如何工作的? - Paŭlo Ebermann
我有16 GB的RAM,只有1 GB的交换空间。显然休眠不起作用,但是我没有遇到任何与这么小的大小有关的问题。 - Nathan Osman
但是为什么在Linux中,一个文件有两个用途,即交换文件既用于为应用程序提供额外的内存(交换),又用于存储整个系统的状态(挂起到磁盘/休眠)?而在Windows中,每个用途都有单独的文件。对于Windows 10来说,swapfile.sys(对于旧版本则是pagefile.sys)用于提供相同功能,而hiberfil.sys用于保存系统在休眠时的内存状态。这样做是否更容易决定使用多大的交换空间(以及休眠所需的空间大小)呢? - therobyouknow
如果您只有一个应用程序在RAM中运行,并且没有使用所有的RAM,比如32GB中的1或2GB,那么为什么休眠模式需要将所有的RAM复制到磁盘中呢? - therobyouknow

引用自Centos
交换空间在Linux中用于当物理内存(RAM)已满时。如果系统需要更多的内存资源而RAM已满,则将内存中的非活动页面移至交换空间。虽然交换空间可以帮助具有较小内存量的机器,但它不应被视为更多RAM的替代品。交换空间位于硬盘上,其访问时间比物理内存慢。
如果您使用Ubuntu作为主要操作系统,并且拥有32GB内存,如果您仅用Ubuntu进行正常的日常任务而不是大型渲染、服务器运行等任务,则几乎不需要交换空间。
之所以会提到在较低内存级别下使用交换空间的原因是因为在这种情况下,交换空间用于弥补他们缺乏的RAM。对于您的情况,假设您使用的是32GB内存的Ubuntu,并且假设您没有进行非常资源密集型的任务,我建议使用4GB到8GB的交换空间。

答案取决于您的计算机使用情况和硬盘大小:
1. 使用情况:如果您使用休眠功能,交换空间的大小应至少等于内存大小。 2. 硬盘大小:这是您能够在硬盘上承受而不会因为“存储空间不足”而困扰自己的容量。根据您的情况,我猜您有1TB的硬盘大小。所以,32GB的交换空间并不是什么大问题。
总结一下:
- 如果您使用休眠功能:1倍内存 <= 交换空间大小 <= 2倍内存(32GB..64GB) - 如果不使用休眠功能:平方根(内存) <= 交换空间大小 <= 2倍内存(6GB..64GB)
更多信息请参考: https://help.ubuntu.com/community/SwapFaq#How_much_swap_do_I_need.3F

不客气 @linuxnewbe。 - Mohammed Hannechi
为什么Linux/Ubuntu没有单独的休眠文件,与交换文件分开?Windows不是这样做的吗? - therobyouknow

如果你想使用挂起到磁盘功能,你需要34GB的交换空间。 如果不需要的话,就不需要交换空间。

1有没有办法将启动时被修改的内存从RAM中清除出去?如果没有交换空间,你该如何做到呢? - David Schwartz
这是唯一正确的答案。当你拥有大量内存时,启用交换空间只会产生一个系统陷入无休止交换并需要重新启动才能恢复的故障模式,因此交换空间实际上是有害的。启用交换空间的唯一原因是为了使休眠功能正常工作。 - R.. GitHub STOP HELPING ICE
1@DavidSchwartz 系统具有大量物理内存的情况下不需要进行交换。操作系统可以自由地在物理内存中移动虚拟内存页面,并且可以选择其他策略来减少内存使用,例如使用zram来压缩较旧、未使用的页面。此外,在启动过程中使用的任何内存在其不再有用并且其他进程需要物理内存时会被自然地回收/覆盖。在任何情况下,您都不需要显式清除此类内存,并且除非活跃使用超过32GB的内存,否则无需进行交换。 - phyrfox
你没有回答我的问题。如何将在启动时被修改的内存从RAM中清除出去?我问的是所有在启动时被进程修改的页面,这些页面可能在接下来的几天甚至永远都不会再次运行。你是说只因为你有很多RAM,就可以浪费一部分作为磁盘缓存来保存可能永远不会被访问的修改页面吗?如果是这样的话,我绝对不同意。 - David Schwartz
请注意GB和GiB之间的差异。1 GiB = 1.074 GB。RAM通常以GiB为单位进行测量。因此,如果要将32 GiB写入磁盘,您可能需要34.3 GB。 - user372194
是否将休眠功能单独设置一个文件会更好呢?就像在Windows中一样。如果还需要考虑休眠功能,那么交换空间大小的决定将变得更加复杂。 - therobyouknow