禁用/删除交换空间的缺点是什么?

我了解swap就像是RAM的扩展,主要在空闲内存量低于某个阈值时使用 - 这个阈值可以通过/proc/sys/中的vm.swappiness进行设置。Swap也可以用于休眠,就像Windows上的虚拟内存一样。
我遇到了this answer,它更详细地介绍了swap以及如何使用它来减少内存使用量,或者像磁盘缓存一样:

Swap很有用,因为未使用的应用程序可以存储在磁盘上,直到需要使用它们为止。然后它们可以被“分页”并正常运行。但是当它不在内存中时,操作系统可以将该内存用于其他用途,比如磁盘缓存。

除此之外,swap还有什么用途呢?如果我(理论上)永远不会耗尽可用内存,并且不使用休眠,那么没有swap会有什么不利影响吗?会有任何性能改进吗?会延长磁盘寿命吗?

这并不真正回答你的问题,所以我将其作为评论放在这里:除了用于休眠之外,你永远不需要交换分区。你可以通过安装swapspace软件包来安装动态交换。该软件包在你需要时自动添加更多的交换空间,并在你不需要时清理交换文件。 - Jay _silly_evarlast_ Wren
3个回答


如果你有足够的内存并且从不使用休眠功能,交换空间完全没有用处。
理论上,如果一些内存页面被发送到交换空间,那么就会有更多的内存可用于缓存和最活跃的应用程序,这可能会稍微提高性能。
但是,交换本身的过程很慢。
如果你有足够的内存,甚至只是足够的内存,安装“zram-config”来稍微提高性能更有用。它将在内存中创建一个压缩的交换空间。

有一些备用空间总是很有用的,以防在内存压力增大时需要额外的空闲内存。此外,内核会将长时间未使用的页面换出,从而为缓存文件数据释放更多物理内存,这应该能提高I/O性能。最后,当启用交换空间时,底层虚拟内存子系统的行为会有所不同,这可能会影响内核在内存非常紧张时选择需要OOM(Out of Memory)的进程的方式。