C. *_*oss 53 linux debian swap
我应该如何决定在具有 2-4 GB RAM 的新 Linux 机器 (Debian) 上进行交换的大小?我真的需要交换空间吗?
Chr*_*ell 54
有很多方法可以计算出一台机器中使用了多少交换。常见建议使用基于 RAM 的公式,例如 2 x RAM、1.5 x RAM、1 x RAM、0.75 x RAM 和 0.5 x RAM。很多时候,公式会根据 RAM 的数量而变化(因此,具有 1GB RAM 的机器可能使用 2 x RAM 交换 (2GB),而具有 16GB RAM 的机器可能使用 0.5 x RAM 交换 (8GB)。
另一件要考虑的事情是盒子的用途。如果您要在机器上运行大量并发运行的进程,但其中大量进程将闲置一段时间,那么添加额外的交换是有意义的。如果您要运行少量关键进程,那么添加额外的交换是有意义的(这可能看起来违反直觉,但我稍后会解释)。如果您将一个盒子作为桌面运行,那么添加额外的交换是有意义的。
至于你是否应该包括交换,是的,你应该。除非您真的知道自己在做什么,并且确实有充分的理由,否则您应该始终包含交换空间。
看,Linux 内核的工作方式,交换不仅在您耗尽所有物理内存时使用。Linux 内核将采用不活动(休眠)的应用程序,并在一段时间后将应用程序从实内存中移出。结果是,当您需要该应用程序时,在应用程序的内存从交换区读回 RAM 时会出现短暂的延迟(通常只有一两秒)。这通常是一件好事。
这允许您将不活动的应用程序置于“睡眠”状态,让您的活动应用程序访问额外的 RAM。此外,Linux 将使用机器上任何可用(未分配)的 RAM 作为磁盘缓存,使大多数(慢)磁盘活动更快、响应更快。交换非活动进程可为您提供更多磁盘缓存,并使您的机器整体速度更快。
最后,让我们面对现实,磁盘空间很便宜。真的很便宜。真的没有充分的理由不刷(相对)一小块空间进行交换。如果我在一台机器上运行 2GB - 4GB 的 RAM,我可能会将交换空间设置为至少等于 RAM。如果它的 RAM 少于 2GB,那么我仍然会使用至少 2GB 的交换空间。
更新:正如提到的一个很好的评论(我忘了包括),如果你正在运行一台笔记本电脑或台式机,你可能想要进入“休眠”模式(暂停到磁盘),那么你总是想要至少一样多交换,因为你有内存。交换空间将用于在计算机“休眠”时存储 RAM 中的内容。
PEr*_*Era 17
Red Hat为具有大量 ram 的服务器推荐以下公式:
if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB
Run Code Online (Sandbox Code Playgroud)
如果您的系统有 1 GB 内存,那么您的交换将是 2 GB,对于 16 GB,它将是 18 GB。
ubi*_*con 12
迟到的答案,我认为这在选定的答案中已经涵盖了很多,但是@ssapkota在这里提供的答案中有一些很好且易于理解的信息(复制/粘贴在下面)。
这是 RedHat 的一个非常好的建议:推荐的系统交换空间
同一链接的摘录:
在过去的几年里,推荐的交换空间量随着系统中的 RAM 量线性增加。但是由于现代系统中的内存量已经增加到数百 GB,现在人们认识到系统需要的交换空间量是该系统上运行的内存工作负载的函数。但是,考虑到交换空间通常在安装时指定,并且很难预先确定系统的内存工作负载,我们建议使用下表确定系统交换。
当前表(截至 2012 年 12 月):
Amount of RAM in the system Recommended swap space Recommended swap space
if allowing for hibernation
--------------------------- ---------------------------- ---------------------------
2GB of RAM or less 2 times the amount of RAM 3 times the amount of RAM
2GB to 8GB of RAM Equal to the amount of RAM 2 times the amount of RAM
8GB to 64GB of RAM 0.5 times the amount of RAM 1.5 times the amount of RAM
64GB of RAM or more 4GB of swap space No extra space needed
Run Code Online (Sandbox Code Playgroud)
原表:
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
Run Code Online (Sandbox Code Playgroud)
这在很大程度上取决于你用它做什么。在适当的工作负载下,您实际上不需要任何交换空间,无论您有 16MB 还是 16384MB 的 RAM;事实上,大多数嵌入式 Linux 设备都没有运行(它们会交换到什么?)
考虑到 RAM 价格,您可能不会将交换用于主动计算。那么,还剩下什么?
(2) 和 (3) 严重依赖于工作量。在我的桌面上,我可以轻松地在 (2) 上使用 4GB+,而无需在其他桌面上运行 vims、xterms 等。
在我运行的大多数服务器上,几乎没有任何东西被换出,1-2GB 的交换(无论 RAM 量如何)似乎还可以。