交换量是否可以过多?

交换量是否可以过多?

我只是想知道交换分区是否太大。如果可以,什么时候交换分区是否太大?交换分区太大会带来哪些不利影响(即使我有足够的磁盘空间)?

如果没有,那么拥有超过建议的交换空间有什么好处?

答案1

乍一看,交换空间不可能太大,因为交换空间可以看作是增加 RAM 的一种方式。实际上,交换空间并不是增加RAM,它只是假装:如果您有 8 GB 的实际 RAM 和一个配置了 24 GB 的交换空间,那么您的程序可以分配和使用最多 8+24=32 GB 的内存,这听起来不错。

如果您运行的应用程序存在内存泄漏或不适合在 8 GB 内存下运行(例如视频编辑),那么这些应用程序将开始使用交换空间,交换速度会很慢。这些应用程序使用的交换空间越多,系统就越忙于将内存移入和移出磁盘。这会大大降低整个系统的响应速度并导致糟糕的用户体验。

最终,当交换空间耗尽时,一些应用程序将面临内存不足的情况,并被内核的 OOM_Killer

维基百科

现代计算机中典型的 OOM 情况发生在操作系统无法创建更多虚拟内存时,因为其所有潜在的支持设备都已被填满。

结论

因此,太多了交换空间是:您拥有的越多,OOM 情况发生得越晚,并且您将遭受系统滞后和无响应的时间越长。

当然,另一个明显的缺点是浪费磁盘空间,但现在这可能不那么重要了。

答案2

较大的交换空间没有直接的缺点。根据内核的管理方式,增加交换空间量超过足够的量不会对性能产生影响,或者影响可以忽略不计。

“太多”交换空间的唯一缺点是您不能将该空间用于存储。

答案3

除了磁盘空间变小之外,您不会感觉到任何其他缺点,我认为如今大多数系统中 2 倍 RAM 容量的概念已经过时。不过,我通常建议在笔记本电脑中使用相同大小的 RAM 作为交换内存,以便让您有机会休眠 PC,而不会因 RAM 的易失性而丢失任何数据。

只有在您认为要在短时间内升级 RAM 大小时,我才会考虑将超过 1 倍大小的 RAM 用于交换分区。或者,如果您计划使用一个系统,其中会将不在同一时刻使用的程序使用的内存量存储在某种缓存中。

希望我的观点足够清楚,我再说一遍,我认为您不会因为交换内存过多而遇到任何问题。

祝你今天过得愉快!

答案4

休眠到底需要多少 SWAP?

认为使用休眠时需要 RAM x 2 作为 SWAP 大小是一种误解。交换大小需要为已使用 RAM不是安装的 RAM。通常交换大小需要为已安装 RAM 的 2/5。要找出使用所需的最低 RAM 量:

$ cat /sys/power/image_size
3153907712

在此 8 GB RAM 的机器上,至少需要 3 GB 才能休眠。

您可以调整值image_size以减小交换大小,但可能会出现故障。您可以调整值以增大交换大小,并可能加快休眠速度。

参考:https://wiki.archlinux.org/index.php/Power_management/Sus​​pend_and_hibernate


1995 年为 16 MB RAM,2018 年 16 GB RAM 的规定有所不同

在你拥有 16 MB 内存的时代,将 720 MB 硬盘上的 2 个 32 MB 交换起来是合理的。这里介绍一些内存和硬盘的历史1995 年华盛顿邮报文章

23 年后,1995 年的一些技术文章(虽然我没有找到)可能会误导新用户。不过,我确实找到了一篇 2007 年的文章,推荐交换空间 = 内存 x 2

1995 年,760 MB HDD 中的 32 MB 交换分区占 HDD 的 4%。事实上,交换分区在 1995 年可能被大量使用。今天是 2018 年,256 GB SSD 上的 16 GB RAM x 2 用于 32 GB 交换分区并不合理,因为它占用了 13% 的 SSD。今天我的 8 GB 交换分区根本没有被使用,除非我在测试 OOM-Killer 时强制它填满它:Google Chrome 会占用我的内存,甚至导致我的计算机几乎停止运行。我该怎么做才能防止这种情况发生?

相关内容