我只是想确认一下交换分区应该是多少。很多地方都说交换大小应该是 RAM 的两倍。有人还告诉我它不应该超过 8 GB。如果 RAM 的两倍大于 8 GB,那么交换大小应该是多少交换分区是?
答案1
以下文本取自 nixCraft 页面Linux:您是否应该使用两倍的 RAM 作为交换空间?。(请点击链接阅读来源以了解更多信息)
请注意,nixCraft 页面引用的文本据称来自OpenBSD 常见问题解答但当前文档中没有匹配的文本;不过,这可能是 2006 年就存在的内容(因此 2 x RAM 规则在 10 多年前就已经过时了):
无意义的规则:服务器的主系统 RAM 大小应为两倍
根据 OpenBSD FAQ:
许多人遵循一条古老的经验法则,即交换分区的大小应为主系统 RAM 的两倍。这条规则毫无意义。在现代系统中,交换分区的数量非常多,大多数人都希望他们的系统永远不进行交换。您不希望系统耗尽 RAM+交换分区,但您通常更希望系统中有足够的 RAM,这样就不需要进行交换。
nixCraft 页面的更多内容:
Red hat 建议对 RHEL 5 进行如下设置:
事实上,系统所需的交换空间量实际上并不是由其拥有的 RAM 量决定的,而是由该系统上运行的内存工作负载决定的。只要匿名内存 [没有文件或设备支持的内存映射:从操作系统堆栈和堆获得的内存] 和系统 V 共享内存的总和小于 RAM 量的 3/4,Red Hat Enterprise Linux 5 系统就可以在没有交换空间的情况下正常运行。在这种情况下,系统将简单地将匿名内存和系统 V 共享内存锁定到 RAM 中,并使用剩余的 RAM 来缓存文件系统数据,因此当内存耗尽时,内核只会回收页面缓存内存。
考虑到:1. 在安装时配置交换空间时,没有简单的方法可以预先确定工作负载所需的内存,2. 系统的 RAM 越多,通常需要的交换空间就越少,更好的交换空间[可能此建议对于 CentOS Linux 7.x 和 RHEL 7]:
因此,nixCraft 页面总结道:
结论
如果 Linux 内核一次要使用超过 2GiB 的交换空间,所有用户都会感到压力。要么获得更多 RAM(推荐),要么转移到更快的存储以改善磁盘 I/O。没有规则,每个设置和配置都是独一无二的。根据您的要求调整值。选择适合您的交换量。
此外,这篇 Red Hat 文章:我们真的需要在现代系统上进行交换吗?(2017)表示:
我们对大多数现代系统的大小建议是“物理 RAM 的一部分”,例如 20%。这样,我们示例中的运行缓慢阶段就不会持续太久,并且 OOM 会更早出现。
当然,有些情况下需要不同的行为。当意识到这种行为时,这种交换配置是可以的,也可以在没有任何交换的情况下运行系统。我们也支持这样的系统 - 但客户应该了解上述情况下的行为。
答案2
我所知道的交换空间的唯一硬性规定是休眠时使用 1x RAM。系统监视器或 CLI free 命令将告诉您在特定硬件配置和使用模式下使用了多少交换空间。使用 2GB RAM 时,我的系统几乎不使用任何交换空间,而且我从未见过超过 0.4GB 的交换空间。
答案3
交换不是您想要使用的东西。它是您想要作为最后的手段的东西,因为交换并不快,它非常慢。如果您使用 1 GB 的交换,那么您的系统响应速度将非常慢。
SWAP 内存的意义在于不是当可用 RAM 用完时,系统会崩溃。它不是您可以用作额外内存的东西,也不是您真正想要使用的东西,除非您真的非常需要。
因此,对于大小,我会说 5 GB,但如果你真的在做占用大量 RAM 的繁重工作,那么你可以增加到 8 GB。但实际上,如果你开始使用超过 1 GB 的交换空间,请开始终止进程。所以你不发生碰撞。
答案4
通常情况下,您不会(也不应该)使用那么多交换空间,所以是的,超过 8 GB 似乎很多。我的台式机有 8 GB 的 RAM 和 8 GB 的交换空间,我想我从未使用过超过 1 GB 的交换空间。2x 规则对于较少的 RAM 来说是合理的,但对于 ~6+ GB 的 RAM 来说就有点疯狂了。
当然这取决于你用电脑做什么......