为什么交换分区的大小应该是 RAM 大小的两倍?

为什么交换分区的大小应该是 RAM 大小的两倍?

为什么建议交换分区大小为 RAM 大小的两倍?

具体来说,为什么我需要将数据存储在 RAM 中两次?

答案1

交换分区的内存大小为原来的两倍只是一般准则,而不是硬性规定。如果您暂停到磁盘(休眠),则至少需要 1 倍的内存大小,并添加足够的备用内存以使用超出物理内存的“交换”内存。因此建议使用 1.5 到 2 倍。

我认为这还取决于您的应用程序使用性质和物理内存的大小等。如果您的 RAM 超过 2GB,并且大多数时间使用非内存密集型应用程序,则可能根本不需要交换分区,无论如何都不需要大的交换分区。

拥有较大的交换文件和较慢的硬盘也会对您的系统造成很大的损害。

以下是一些有用的读物​​:

Ubuntu Swap常见问题解答
SUperuser - 4GB RAM 的交换分区大小
我是否需要交换分区?如果需要,需要多大?

答案2

这是一个古老的经验法则,我认为它不再有意义,因为现在,这可能相当于相对于存储速度的荒谬的交换量。

您应该拥有的最小交换量是典型的稳定状态使用量。(这是在长时间正常运行后达到的数量,此时您的大部分可用内存由页面缓存组成。掉期保卫战是一本值得一读的书。

但我在这里要告诉您,也存在一个最大值...如果响应能力是一个值得关注的问题的话。

桌面场景:通常,当您内存不足时(例如意外触发 fork 炸弹时make -j)会发生以下情况:首先,您会注意到用户界面有点滞后,这意味着您大约有一分钟的时间来终止有问题的进程,然后鼠标指针就会失去响应。但这仅仅是开始!您看,然后,计算机将坐在那里,其 SSD LED 持续亮起,翻动其余的交换空间,持续数十分钟到数小时,而您却无能为力(除了拔掉电源插头)。此时,您会发誓您想要OOM 杀手将提前启动,而不是浪费你的一天。

因此,从可用性的角度来看,拥有大量通常不使用的交换空间实际上是不好的 - 它只是在发生灾难性内存泄漏(例如 OOM 不可避免)时延迟了不可避免的结果,在此期间您的计算机实际上不可用。

无论计算机有多少 RAM,我通常都会选择 ½-2 GiB 交换。

答案3

具体来说,为什么我需要将数据存储在 RAM 中两次?

swop 只是用来释放系统内存的。如果内存开始不足,系统会通过将内存中最少使用的数据移到硬盘交换文件来释放内存。这当然会降低速度,但可以释放内存供其他应用程序使用。

由于内存如此便宜,您总是最好尽可能多地购买内存。这样,交换区访问量就会很小,您的系统就会保持良好和快速。

答案4

有了更大的交换空间,程序就可以使用比计算机上现有的更多的 RAM。这是可能的,因为即使数据占用的空间比物理内存一次容纳的还要多,也无法一次全部访问 - 交换空间会在需要时被拉入物理内存。另一种方法是在内存耗尽时随机终止程序。如果你想编辑高分辨率图像或视频,或进行 3D 建模或渲染,或对大量数据进行数值分析,这种方法特别有用,有许多类型的程序最终需要大量的 RAM,与其让它完全无法运行而不崩溃,不如让它运行得很慢。

相关内容