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


9

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

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

Answers:


10

具有两倍内存大小的交换分区只是一般准则,而不是一成不变的规则。如果要挂接到磁盘(休眠),则至少需要1倍的内存大小,并添加足够的备用空间来使用超出物理内存的“交换”内存。因此建议使用1.5至2倍。

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

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

这里有一些有用的读物​​:

Ubuntu SwapFAQ
SUperuser-交换分区大小为4GB RAM
我需要交换分区吗?如果需要,交换分区有多大?


1
不管速度慢与慢,总有一个交换以防万一,即使您不需要它也比没有可用交换而冒用完RAM更好。

@Don,是的,我同意使用交换分区更安全。:)
okw 2010年

2

这是一条旧的经验法则,我认为这不再有意义,因为如今,这可能等同于相对于存储速度的大量交换。

您应该拥有的最小交换量是您的典型稳态使用量。(这是长时间运行后达到的数量,这时您的大部分可用内存都由页面缓存组成。交换保护是一个很好的读取方法。)

但是我在这里告诉您还有一个最大值……如果响应能力根本不值得关注。

桌面场景:通常,当您的内存不足时(例如,意外地放出诸如的叉子炸弹时make -j)会发生以下情况:首先,您注意到用户界面有点滞后,这意味着您大约有一分钟的时间来消除违规行为鼠标指针变得无响应之前的过程。但这仅仅是开始!然后,您会看到计算机将坐在那里,并且其SSD LED持续亮着,在剩余的交换空间中搅拌了几十分钟到几个小时,而您什么也做不到(除非拔掉插头)。在这一点上,您将发誓要让OOM杀手早点踢,而不是浪费您的时间。

因此,从可用性的角度来看,拥有通常不使用的大量交换空间实际上是不好的-在发生灾难性的内存泄漏(例如,不可避免的OOM)的情况下,这只会延迟不可避免的时间。 ,出于所有实际目的,不可用。

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


0

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

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

由于内存是如此便宜,因此您总是拥有尽可能多的钱。这样,交换几乎没有访问权限,并且您的系统保持良好且快速的状态。


0

使用更大的交换空间,程序可以使用比计算机上更多的RAM。这是可能的,因为即使数据一次占用的空间超出了物理内存的容量,也无法一次访问所有数据-交换会根据需要拉到物理内存中。另一种方法是在内存用尽时随机杀死程序。如果您要编辑高分辨率的图像或视频,或者进行3D建模或渲染,或者对大量数据进行数值分析,则这特别有用,因为许多程序最终都需要大量的RAM,而在这种情况下,最好是使其运行非常缓慢,而不是使其完全运行而不会崩溃。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.