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

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

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

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

这是一个好主意吗?

其次,操作系统何时/从什么时候开始使用交换?

答案1

不,这是一个坏主意。

您不应该将交换视为扩展内存的机制;它是不存储部分内存的存储区域保留在物理内存中,其内容不存在于其他任何地方。看为什么 Linux 需要虚拟机中的交换空间?了解详情。

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

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

答案2

如果您内存不足并且无力升级 RAM,那么您可以想办法释放服务器上的一些内存。一般来说,存在许多您可能并不真正需要的流程/服务。例如,在服务器系统上不需要“cups”打印服务。因此,识别所有此类服务并禁用它们。

添加额外的“交换”并没有什么坏处,但请记住,它并不能替代 RAM。如果您的应用程序开始使用交换,则会经历严重的性能下降。

答案3

添加到斯蒂芬·基特(Stephen Kitt)的出色回答中:在物理机中计划交换使用可能是一个坏主意,在虚拟环境中是一个非常糟糕的主意由于所有 I/O 都集中在(一些)公共中央存储设备上。

基本上,为了提高基础设施的性能,您需要制定策略来最大限度地减少 I/O,而不是让情况变得更糟。

相关内容