交换内存,以及操作系统何时开始使用它

yae*_*ael 3 linux memory swap lvm virtual-memory

我们运行的是 Red Hat Enterprise Linux 版本 7,我们所有的机器都是虚拟机。

我们的内存资源是有限的,物理 RAM 需要花钱,所以我们正在考虑增加交换而不是增加内存。

这是一个好主意吗?

其次,操作系统何时/从哪一点开始使用交换?

Ste*_*itt 11

不,这是个坏主意。

您不应该将交换视为一种可以扩展内存的机制;它是不部分内存的存储区域必须保留在物理内存中,并且其内容不存在任何其他地方。请参阅为什么 Linux 需要 VM 中的交换空间?详情。

如果在您的 VM 中运行的进程内存不足,您需要确定它们的实际工作集是什么,无论是在正常运行情况下还是在最坏情况下。然后,假设您不能减少它们的内存使用量,您需要配置它们的内存设置以适应:RAM 分配、交换和内核配置(交换等)。RAM 分配将直接影响您可以在每个主机上运行的 VM 数量,如果您无法为主机添加更多内存,这应该是您的主要调整变量。(当然,这对成本方面没有帮助......)根据您需要 VM 的用途,另一种策略可能是使用容器,因为这将允许您减少开销。

操作系统通常在需要分配内存并且可用物理内存用完时开始使用交换,并且当前在物理内存中最少使用的内存页面没有所谓的后备存储(或者更确切地说,它们的后备存储是交换)。当程序需要更多内存时,内核会首先寻找一些空闲内存;然后它将查看它可以摆脱的事物的分层列表 - 缓存,缓冲区,映射的可执行文件等。 请注意,即使在没有“可见”内存压力的情况下也可以使用交换:总是有数据存储在实际未使用的内存,最好存储在交换中。

  • @yael 它的延迟仍然是 RAM 的大约一千倍。这是对旋转磁盘的改进(它比 RAM 延迟接近一百万倍),但仍然是一个陡峭的惩罚。 (2认同)