我应该如何决定使用2-4 GB的RAM在新的Linux机器(Debian)上进行交换的大小? 我真的需要交换空间吗?
有很多方法可以找出机器中交换使用多less。 常见build议使用基于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 RAM的盒子可能使用.5 x RAM交换(8GB)。
另外要考虑的是盒子将用于什么。 如果你打算在机器上运行大量并发运行的进程,但是其中很大一部分将会闲置一段时间,那么添加额外的交换是有道理的。 如果要运行less量的关键stream程,那么添加额外的交换是有意义的(这可能看起来与直觉相反,但我会在一分钟内解释)。 如果你将一个盒子作为桌面运行,那么添加额外的交换是有道理的。
至于你是否应该包括掉期,是的,你应该。 除非你真的知道你在做什么,否则你应该总是包含交换空间,而且你真的有一个很好的理由。
请参阅Linux内核的工作方式,交换不仅用于耗尽所有物理内存。 Linux内核将采取不活动(hibernate)的应用程序,并在一段时间后,将应用程序从实际内存中移出。 结果是当你需要这个应用程序的时候,会有一个瞬间的延迟(通常只有一两秒钟),而应用程序的内存从swap被读回RAM。 这通常是一件好事。
这使您可以将不活动的应用程序“hibernate”,让您的活动应用程序访问额外的RAM。 此外,Linux将使用机器上任何可用(未分配)的RAM作为磁盘caching,使得大多数(慢速)磁盘活动更快,响应更快。 换出不活动的进程可以为您提供更多的磁盘caching,并使您的机器整体更快。
最后,让我们面对它,磁盘空间便宜。 真的很便宜。 根本没有什么理由不去刷一个(相对)较小的交换空间。 如果我在一台机器上运行2GB – 4GB的内存,我可能会设置我的交换空间至less等于内存。 如果它的内存不足2GB,那么我仍然至less需要2GB的交换空间。
更新:作为一个优秀的评论(我忘了包括),如果你正在运行一个笔记本电脑或桌面,你可能想进入“hibernate”模式(挂起到磁盘),那么你总是希望至less因为你有内存交换。 交换空间将用于在“睡眠”时在计算机中存储RAM的内容。
红帽build议使用以下公式来计算大量内存:
if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB
如果你的系统有1 GB的RAM,你的交换将是2 GB,16 GB的将是18 GB。
迟到的答案,我认为这在选定的答案中已经涵盖了很多,但是@ssapkota 在这里提供的答案中有一些好的和易于理解的信息 (复制/粘贴在下面)。
以下是来自RedHat的一个非常好的build议: 推荐的系统交换空间
摘自同一链接:
过去几年,交换空间的build议数量随着系统内存量的增加而线性增加。 但是,由于现代系统中的内存数量已经增加到数百GB, 现在认识到系统所需的交换空间量是在该系统上运行的内存工作负载的函数。 但是,由于交换空间通常是在安装时指定的,而且可能难以事先确定系统的内存工作负载,所以build议使用下表确定系统交换。
当前表(截至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
这取决于你在做什么。 在适当的工作量下,您不需要任何交换空间,无论您有16MB或16384MB的RAM; 事实上,大多数embedded式Linux设备没有运行(它们将交换什么?)
考虑到RAM的价格,你可能不会使用交换活跃的计算。 那剩下什么了?
(2)和(3)在很大程度上取决于工作量。 在我的桌面上,我可以很容易地使用(2)上的4GB +,从其他桌面上运行vims,xterm等。
在我运行的大多数服务器上,几乎没有任何东西被交换出来,并且交换1-2GB(不pipeRAM的数量)是否合适。
那么,这取决于您计划运行的服务和应用程序。 您可以使用-m来观察内存使用情况,并随着时间的推移相应地调整交换分区。
这里有一个有趣的讨论这个问题。 就个人而言(在阅读完这个讨论之后),我仍然会留下大约1GB的交换空间。
我不能直接和Debian说话,但是我知道,当你起床高于2GB的RAM时,原来的2×RAM方程式会改变,通常下降到1×RAM。 我认为一旦你达到了16 GB的内存,这个build议再次降低到.75xRAM。
当然,我发现这对于Solaris来说是正确的,而且实际上是用于Oracle安装的度量标准,所以YMMV取决于您要在那里运行的应用程序。
我总是尽可能地交换(至less)RAM。 以防万一我想有一天冬眠机器。 可以less工作,但也可以。
硬盘空间很便宜,所以我毫不犹豫的提供掉换空间。
交换空间可以用作“填充”,否则会立即耗尽内存。
当一个进程消耗所有可用的RAM,然后一些机器运行得非常缓慢,但是通常你可以恢复。 查看哪个进程导致问题也更容易。
多年来,我一直遵循这样的规则,即对于Windows机器,您有与RAM一样多的交换空间…在Novell上,如果我们有更多的打印机,我们会调高交换机…对于linux而言,我的规则和实践已经有1GB交换每个2GB的RAM你有。 然后将它放在磁盘的前面,以便更快地访问它。
如果是LAMP服务器,则1/2规则有效。
里程将根据应用程序和GUI使用情况而有所不同。
我创build1GB的交换,并购买更多的RAM第二次使用。 现代电脑并不需要交换,内存很便宜。
你用什么系统? 我个人不使用任何交换。 如果有什么东西使用512MB的东西,东西可以放在磁盘上,如果长时间驻留但不活动。
我只是使用一个小的令牌交换(通常是256 MB,但我甚至已经做了64 MB),因为configuration零交换的系统需要特殊的configuration。
磁盘空间很便宜,但slooooooooow。 一旦系统开始交换,性能为零。 RAM不再那么昂贵。
相信我,买一个稍慢的处理器,并购买更多的内存。 2.8 GHz而不是3.0 GHz,至less可以为您节省足够的资金购买另外2 GB的RAM。