为什么交换大小应该等于或大于 RAM?

Xiè*_*léi 7 linux swap

很多人说,如果你有 2GB 的 RAM,你应该配置一个 2GB 或更多的交换。FWIK 休眠可能需要相同大小的交换来在断电时保持内存,但一般来说,如果你有一个大内存,你甚至根本不需要交换,不是吗?

对于 Linux 用户,当你在没有交换的情况下安装 Linux 时,安装程​​序会警告你没有交换安装。不,我只是不需要它,因为我的 RAM 足够大,对吗?

Chr*_*rpe 10

交换文件不仅仅是物理 RAM 用完时要进入的缓冲区。这是关于交换文件如何操作的过于简单化的观点。也就是说,您可以在没有交换文件的情况下进行操作,只要您 100% 确信在任何时候都不会超出 RAM 的容量。因为如果你这样做,你的系统就会崩溃。

IMO,最好保留页面文件并密切关注系统使用它的频率。如果您从不抖动,那不是问题;如果您一直在抖动,那么如果您根本不运行页面文件,那么您遇到的问题可能会更加严重。

确实,我们现在有更多的 RAM,而且价格便宜。但磁盘空间也是如此。除非您有一个引人注目的磁盘空间限制,否则我建议您坚持使用大小合适的交换文件。

如果你觉得东西被分页到磁盘的频率太高,你可以考虑调整你的swappiness以减少侵略性。

  • 选择一个 nit:如果系统内存不足(在这种情况下假设为 linux),它不一定会崩溃。然而,它可能会变得不稳定,因为 OOM-killer 激活并开始终止进程​​。 (2认同)

Jes*_*r M 8

所有关于交换大小的所谓“规则”从来都不是规则。它们是简化,如果您不知道盒子的 RAM 使用模式或只是不想优化,它们可以帮助您估计一个合适的数字的小指南。

随着时间的推移,简化变成了民间传说和要遵守的“规则”,RAM 和磁盘之间的相对成本和延迟差异逐渐改变。今天,这些规则中的大多数充其量是毫无意义的。

但是,请注意,问题不是“我可以将所有应用程序保存在 RAM 中,我不需要交换”。问题是“我有 x RAM。我如何最好地利用它来满足运行应用程序、睡眠应用程序和磁盘 I/O 缓冲的需求?”。

OP 问题被标记为“Linux”,我对 Linux 虚拟内存管理了解不多(我对 Windows 和 FreeBSD 了解更多),因此我不会在这里提供建议的新指南。开始阅读的好地方是 Linux 2.6 内核开发人员之间关于“swappiness”VM 调整参数的讨论线程

当你在没有交换的情况下安装 Linux 时,安装程​​序会警告你没有交换安装。

这只是安装程序中的硬编码行为,因为交换几乎总是一个好主意。许多 Linux 发行版可能需要交换休眠状态,但如果您愿意,可以更改它

不,我只是不需要它 [swap] 因为我的 RAM 足够大,对吗?

错误的。或者纠正少量的“需要”,严格来说在这种情况下你不需要交换,但你的电脑会更快。如果没有交换,您的所有程序都驻留在 RAM 中,包括那些不活动且不会很快执行的程序。通过交换,不活动的程序可以被换出,物理 RAM 可用于更高效的事情——主要是磁盘缓冲来伪装磁盘 I/O(包括 SSD)的实际速度有多慢。

如果您想控制取消分配磁盘缓冲区和换出应用程序代码之间的内核平衡,那么您需要“swappiness”调整参数,我在上面链接了一个讨论。