我理解交换就像是 RAM 的扩展,主要用于当可用内存量低于某个阈值时 - 可以使用 进行设置vm.swappiness
。/proc/sys/
交换也可用于休眠,就像 Windows 上的虚拟内存一样。
我遇到过这个答案它详细介绍了有关交换以及如何使用它来减少内存使用量或像磁盘缓存一样:
交换空间很有用,因为未使用的应用程序可以存储在磁盘上,直到被使用。然后它们可以被“调入”并再次正常运行。虽然它不在内存中,但操作系统可以将该内存用于其他用途,例如磁盘缓存。
但除了这些之外,swap 还有什么用途?如果我绝不(理论上)耗尽可用内存,并且不使用休眠,没有交换会有什么缺点吗?性能会有所提高吗?磁盘寿命会更长吗?
答案1
如果您有足够的 RAM 并且从不使用休眠模式,那么交换就完全没用了。
理论上,如果将一些 RAM 页面发送到交换区,则有更多的 RAM 可用于缓存和最活跃的应用程序,这可以稍微提高性能。
但交换过程本身却很缓慢。
如果您有足够的 RAM,甚至刚好够用,则安装它zram-config
来稍微提高性能会更有用。它将在 RAM 中创建一个压缩交换。
答案2
当笔记本电脑的电池电量低于阈值时,笔记本电脑将进入休眠并关机状态。在休眠过程中,RAM 的内容将被转储到 SWAP 分区中。
参考:
https://superuser.com/a/1203014
https://help.ubuntu.com/community/SwapFaq#Why_do_I_need_swap.3F
编辑:在 Ubuntu-18.04 之后,如果没有创建单独的交换分区,Ubuntu 会自动在根文件系统中创建交换文件。
答案3
当内存压力变高时,如果需要一些额外的可用内存,那么进行一些交换总是有用的。此外,内核将交换出一段时间未使用的页面,这样可以释放更多物理内存来缓存文件数据,从而提高 I/O 性能。最后,当启用交换时,底层虚拟内存子系统的行为会有所不同,这可能会影响内核在内存非常紧张时选择需要 OOM 的进程的方式。