以下文本来自nixCraft页面
Linux:您应该使用两倍于交换空间的RAM吗?。
(请点击链接并阅读源文获取更多信息)
请注意,nixCraft页面引用了据称来源于
OpenBSD FAQ的文字,但当前文档中没有匹配的文字;然而,这可能是2006年曾经存在的内容(所以2倍RAM规则在10多年前就已经过时了)。
胡说八道的规则:服务器的主系统RAM大小的两倍
根据OpenBSD FAQ:
很多人遵循一个老生常谈的规则,即交换分区应该是主系统RAM大小的两倍。这个规则是胡说八道的。在现代系统上,这是非常大的交换空间,大多数人更喜欢他们的系统从不进行交换。你不希望你的系统因为RAM+交换空间不足而运行出问题,但通常情况下,你更愿意在系统中有足够的RAM,以免需要进行交换。
来自nixCraft页面的更多信息:
Red Hat建议在RHEL 5中进行以下设置:
实际上,系统所需的交换空间量并不是取决于其拥有的RAM数量,而是取决于正在运行在该系统上的内存工作负载。只要匿名内存(没有文件或设备支持的内存映射:从操作系统堆栈和堆中获得的内存)和System V共享内存的总和小于大约3/4的RAM数量,Red Hat Enterprise Linux 5系统将可以完全不使用交换空间运行。在这种情况下,系统将简单地锁定匿名和System V共享内存到RAM中,并使用剩余的RAM来缓存文件系统数据,因此当内存耗尽时,内核仅回收页面缓存内存。
考虑到:
1. 在安装时配置交换空间时,没有简单的方法来预测工作负载所需的内存。
2. 系统拥有的RAM越多,它通常需要的交换空间就越少,更好的交换空间[可能沿着
this recommendation for CentOS Linux 7.x and RHEL 7]:
![Recommendation for Swap Space in RHEL/CentOS 7](https://istack.dev59.com/pNOe4.webp)
而nixCraft页面的结论如下:
结论
如果Linux内核一次性使用超过2GiB的交换空间,所有用户都会感到压力。要么增加更多的RAM(推荐),要么将其移动到更快的存储设备以改善磁盘I/O。没有固定的规则,每个设置和配置都是独特的。根据您的需求调整值。选择适合您的交换空间大小。
此外,这篇Red Hat文章:
我们真的需要在现代系统上使用交换空间吗?(2017年)指出:
我们对大多数现代系统的大小建议是“物理内存的一部分”,例如20%。通过这样做,我们示例中痛苦缓慢的操作阶段不会持续太久,并且OOM(内存溢出)将更早地发生。
当然,有些情况下可能需要不同的行为。如果了解这种行为,那么这样的交换配置也是可以的,或者在没有任何交换空间的情况下运行系统也是可以的。我们也支持这样的系统,但客户应该了解上述情况下的行为。