如果不行,拥有超过推荐交换空间的好处是什么?
乍一看,你可能认为交换空间越多越好,因为你可以将其视为增加内存的一种方式。实际上,它并没有真正“增加”内存,只是假装增加了:如果你有8GB的真实内存和配置了24GB的交换空间,那么你的程序可以分配和使用高达8+24=32GB的内存,这听起来一开始很不错。
如果你运行的应用程序要么存在内存泄漏,要么并不适合在8GB内存下运行(比如视频编辑等),那么这些应用程序将开始使用交换空间,而交换操作是很慢的。交换空间被这些应用程序积极使用得越多,系统就会忙于将内存从磁盘中移动出来或者移回磁盘,这将严重降低整个系统的响应速度,给用户带来糟糕的体验。
最终,当交换空间耗尽时,一些应用程序将面临内存不足的情况,并被内核的OOM Killer杀掉。
来自维基百科:
现代计算机中典型的OOM情况发生在操作系统无法再创建更多虚拟内存时,因为所有潜在的后备设备都已被填满。在Linux中,当物理内存(RAM)已满时,会使用交换空间。如果系统需要更多的内存资源而RAM已满,那么内存中的非活动页面将被移至交换空间。虽然交换空间可以帮助具有较少RAM的机器,但它不应被视为更多RAM的替代品。交换空间位于硬盘上,其访问时间比物理内存慢。
交换空间可以是专用的交换分区(推荐),也可以是交换文件,或者是交换分区和交换文件的组合。
交换空间应等于物理RAM的2倍。
优点:
当您的内存完全填满时,提供溢出空间 可以将很少使用的项目移出高速内存 允许您进入休眠状态
缺点:
占用硬盘空间,因为SWAP分区不会动态调整大小 可能增加对硬盘的磨损 不一定能提高性能(见下文)
无论如何,如果您将Ubuntu用作日常主操作系统,我建议内存大小增加2倍。这是因为您使用Ubuntu并不仅仅是因为您有一台旧电脑,而是因为您想将该系统作为您的主要操作系统。
与其调整系统分区来保持其运行状态,不如购买一些额外的硬件(如果需要)。就像购买游戏时确保您的系统“最新”,而不是调整设置使其“可玩”。
您可以选择更多的空间、SWAP、速度和功率,而不是过短或之后需要调整一切。因为您需要SWAP或者空间,购买了内存?或者需要快速购买内存,因为一个内存插槽或条破损了。
有一种误解认为在使用休眠时,您需要RAM x 2来确定SWAP大小。实际上,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/Suspend_and_hibernate
在你拥有16MB RAM的时代,为你的720MB硬盘提供32MB交换空间是有道理的。在这篇1995年《华盛顿邮报》文章中可以了解一些RAM和硬盘的历史。
23年后,一些来自1995年的技术文章(尽管我没有找到任何)可能会误导新用户。然而,我确实找到了一篇2007年的文章,推荐使用SWAP = RAM x 2。
回到1995年,760MB的硬盘中32MB的交换空间占据了硬盘的4%。确实,在1995年,交换分区可能被广泛使用。而在今天的2018年,对于256GB的固态硬盘来说,拥有16GB x 2的内存用于32GB的交换空间已经不再合理,因为它占据了SSD的13%。如今,我的8GB交换分区根本没有被使用,除非我强制将其填满以进行OOM-Killer测试:Google Chrome会占用我的内存,导致我的电脑几乎停顿。我该怎么做才能防止这种情况发生?。确实存在一些开销,但非常小;对于每个磁盘上的“页面”,都有一个引用计数器,并且与每个交换区相关联的是一对结构体;这些都在内核内存中,所以不能进行页面化。根据架构而定,每4GB的大小在2到16MB之间。其余部分相当动态,因此取决于使用情况。
因此,你可以有很多交换空间,但要记住页面化的地址空间本身对RAM会有一些开销,除此之外还会对交换页进行一些跟踪,因此它不能扩展得太远;即使带来了相当大的开销,文件系统在处理较大的区域时比交换区更高效,因为虚拟文件系统(vfs)可以将结构信息转移到磁盘上(通常至少无法交换页表,因为受硬件限制,并且虚拟内存管理器(vmm)可能会使用不可交换的内存进行所有的记录)。
我想不出其他任何缺点,另一方面,如果交换页面太少,可能会导致页面交换时的碎片化,这意味着需要更多的寻址。当拥有大量交换空间时,达到一定点后也不会有改进。
交换通常是最后的资源(休眠除外),所以如果你的RAM超过4GB,特别是你拥有超过4GB RAM,甚至和RAM一样大,你可能不会从拥有更多的交换空间中获益(考虑到64GB)。