Answers:
您可以通过多种方法来计算一台计算机中有多少次交换使用。常见建议使用基于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的盒子可能使用0.5x RAM交换(8GB)。
要考虑的另一件事是盒子将用于什么用途。如果您要在盒子上运行大量并发运行的进程,但是其中很多进程在一段时间内处于空闲状态,那么添加额外的交换是有意义的。如果您要运行少量的关键流程,那么添加额外的交换是有意义的(这似乎是违反直觉的,但是我会在稍后解释)。如果您将盒子作为桌面运行,那么添加额外的交换是有意义的。
至于是否应该包括交换,是的,应该。除非您确实知道自己在做什么,并且确实有充分的理由,否则应该始终包含交换空间。
看,Linux内核的工作方式,交换不仅是在用尽所有物理内存时使用的。Linux内核将处理处于非活动状态(休眠)的应用程序,并在一段时间后将应用程序移至实际内存中进行交换。结果是,当您需要该应用程序时,会有短暂的延迟(通常只有一两秒钟),而应用程序的内存从交换区读回RAM。这通常是一件好事。
这使您可以将不活动的应用程序置于“睡眠”状态,从而使活动的应用程序可以访问其他RAM。此外,Linux会将计算机上任何可用的(未分配的)RAM用作磁盘缓存,从而使大多数(慢速)磁盘活动更快,响应速度更快。交换不活动的进程将为您提供更多的磁盘缓存,并使您的计算机总体上更快。
最后,让我们面对现实,磁盘空间很便宜。真便宜。根本没有任何理由不擦拭(相对)小的交换空间。如果我在一台计算机上运行2GB-4GB的RAM,则可能会将交换空间设置为至少等于RAM。如果少于2GB的RAM,那么我仍然会进行至少2GB的交换。
更新:作为一个很好的评论(我忘了包括),如果您正在运行一台笔记本电脑或台式机,而您可能希望将其置于“休眠”模式(挂起到磁盘),那么您总是希望至少有那么多交换内存。交换空间将用于在计算机“休眠”时将其内容存储在计算机中。
对于具有大量内存的服务器,红帽推荐以下公式:
if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB
如果您的系统具有1 GB内存,则交换空间为2 GB,对于16 GB,交换空间为18 GB。
较晚的答案,我认为所选的答案已经涵盖了大部分内容,但是@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
这很大程度上取决于您正在使用它。有了适当的工作负载,实际上您不需要任何交换空间,无论您有16MB还是16384MB的RAM。实际上,大多数嵌入式Linux设备运行时都没有任何设备(它们将交换到什么?)
考虑到RAM的价格,您可能不会使用swap进行主动计算。那么,还剩下什么呢?
(2)和(3)在很大程度上取决于工作量。在我的桌面上,我可以轻松地在(2)上使用4GB +,而无需在其他桌面上运行vims,xterms等。
在我运行的大多数服务器上,几乎没有交换掉任何东西,并且1–2GB的交换空间(与RAM大小无关)似乎还可以。
madvise
,但这不会失败...该错误涉及在垃圾回收期间内存不足。当然,添加交换可以防止这种情况,但是添加RAM也会如此。也许是由于使用PAE的32位?
Xms
和Xmx
没有设置为相同的值,它会严重咬你:因重大事项我们两个+星期,直到我们终于跟踪它
我只使用一个小的令牌交换(通常为256 MB,但我什至完成了64 MB),因为使用零交换配置系统需要特殊配置。
磁盘空间很便宜,但是很便宜。系统开始交换后,性能为零。RAM不再那么昂贵。
相信我,购买稍微慢一点的处理器并购买更多RAM。2.8 GHz而不是3.0 GHz将至少为您节省足够的钱来购买另外2 GB的RAM。