it-swarm.cn

2-4GB系统上有多少SWAP空间?

如何确定要在具有2-4 GB RAM的新Linux计算机(Debian)上进行交换的大小?我真的需要交换空间吗?

53
C. Ross

您可以通过多种方法来计算一台计算机中有多少次交换使用。常见建议使用基于RAM的公式,例如2 x RAM,1.5 x RAM,1 x RAM,.75 x RAM和.5 x RAM。很多时候,公式会根据RAM(因此一个具有1GB RAM的盒子可能会使用2 x RAM交换(2GB),带有16GB内存的包装盒可能会使用0.5 x RAM交换(8GB)。

要考虑的另一件事是盒子将用于什么用途。如果您要在盒子上运行大量并发运行的进程,但是其中很多进程在一段时间内处于空闲状态,那么添加额外的交换是有意义的。如果您要运行少量的关键流程,那么添加额外的交换是有意义的(这似乎是违反直觉的,但是我会在稍后解释)。如果您将盒子作为桌面运行,那么添加额外的交换是有意义的。

至于是否应该包括交换,是的,应该。除非您真的知道自己在做什么,否则您应该始终包含交换空间,并且您确实有很好的理由。

看,Linux内核的工作方式,交换不仅是在用尽所有物理内存时使用的。 Linux内核将处理处于非活动状态(休眠)的应用程序,并在一段时间后将应用程序移至实际内存中进行交换。结果是,当您需要该应用程序时,会有短暂的延迟(通常只有一两秒钟),而应用程序的内存从交换区读回RAM。这通常是一件好事。

这使您可以将不活动的应用程序置于“睡眠”状态,从而使活动的应用程序可以访问其他RAM。此外,Linux将使用计算机上任何可用的(未分配的)RAM)作为磁盘高速缓存,从而使大多数(慢速)磁盘活动更快,响应更快。您的机器总体上更快。

最后,让我们面对现实,磁盘空间很便宜。真便宜。确实没有任何理由不擦拭(相对)小的交换空间。如果我在计算机上运行2GB-4GB RAM,我可能会将交换空间设置为至少等于RAM。如果它小于2GB RAM,则我仍然会使用至少2GB的交换空间。

更新:作为提到的一个很好的评论(我忘了包括),如果您正在运行笔记本电脑或台式机,而您可能希望将其置于“休眠”模式(挂起到磁盘),则始终希望交换的内存最少。交换空间将用于在计算机“休眠”时将RAM)的内容存储在计算机中。

54
Christopher Cashell

Red Hat 推荐 对于具有大量ram的服务器的以下公式:

if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB

如果您的系统具有1 GB内存,则交换空间为2 GB,对于16 GB,交换空间为18 GB。

17
PEra

较晚的答案,我认为所选的答案已经涵盖了大部分内容,但是@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

原始表格:

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 
12
ubiquibacon

这很大程度上取决于您正在使用它。有了适当的工作负载,实际上您不需要任何交换空间,无论您有16MB还是16384MB的RAM。实际上,大多数嵌入式Linux设备都可以不带任何设备运行(它们将交换给什么?)

考虑到RAM价格,您可能不会使用交换进行主动计算。那么,还剩下什么呢?

  1. 在台式机上,交换空间用于磁盘挂起。此交换空间需要大约1×RAM,具体取决于内存内容压缩的程度。
  2. 允许从RAM)删除不活动的任务,以便为磁盘缓存腾出更多空间
  3. 相同,但允许活动进程代替堆/堆栈使用它

(2)和(3)在很大程度上取决于工作量。在我的桌面上,我可以轻松地在(2)上使用4GB +,而无需在其他桌面上运行vims,xterms等。

在我运行的大多数服务器上,几乎没有交换掉任何东西,而1-2GB的交换(不管RAM数量)都可以)。

8
derobert

好吧,这取决于您计划运行哪些服务和应用程序。您可以使用free -m监视内存使用情况,并随时间调整相应的交换分区。

这是一个关于主题的 有趣的讨论 。就个人而言(在阅读该讨论之后),我仍然会留出大约1 GB的空间用于交换。

4
Ivan

交换空间可以用作“填充”,否则您将立即用尽内存。

当某个进程消耗了所有可用的RAM)之后,某些计算机将运行非常缓慢,但是您通常可以恢复。也可以更容易地查看哪个进程导致了问题。 。

2
starblue

我无法直接与Debian对话,但是我知道当您获得2 GB以上的RAM时,原始的2xRAM方程会发生变化,通常会降低到1xRAM。我认为,一旦您达到16 GB RAM),建议将再次降低至.75xRAM。

当然,我发现对于Solaris确实如此,并且实际上是用于Oracle安装的度量标准,因此YMMV取决于您将要在其上运行的应用程序。

2
Milner

我总是进行(至少)与RAM一样多的交换。以防万一我想让机器休眠。可以减少工作量,但也不能减少工作量。

如今,HDD空间很便宜,因此,我会毫不犹豫地放弃交换空间。

2
Martin C.

多年以来,我一直遵循以下规则:对于Windows计算机,交换空间与RAM一样多...在Novell上,如果我们有更多打印机,我们将调高交换空间...对于Linux,对于我来说,规则和实践是1GB每2GB交换一次RAM。您将它放在磁盘的前面,这样可以更快地访问它。

  • 如果它是邮件/垃圾邮件网关,则我使用两次交换到RAM
  • 如果它是*服务器,那么我根本不使用swap
  • 如果是LAMP服务器,则1/2规则生效。

  • 里程会因应用程序和GUI使用情况而异。

1
Thomas Denton

我只使用一个小的令牌交换(通常为256 MB,但我什至完成了64 MB),因为使用零交换配置系统需要特殊配置。

磁盘空间很便宜,但是很便宜。系统开始交换后,性能为零。并且RAM不再那么昂贵。

相信我,购买稍微慢一点的处理器并购买更多RAM。 2.8 GHz而不是3.0 GHz将至少为您节省足够的钱来购买另外2 GB的RAM。

0
Maneesh Kasera

我创建了1GB的交换空间,并购买了更多RAM),它正在使用的第二秒钟。您实际上并不需要在现代计算机上进行交换,RAM非常便宜。

0
Adam Gibbins

您正在使用该系统做什么?我个人不使用任何交换。如果有任何东西使用令牌512MB或其他东西,那么如果驻留在设备上但长时间不活动,则可以将其放入磁盘。

0
Mike McQuaid