我是一名承包商,并获得了一台具有 128 GB RAM 的虚拟机,这是我正在开发的应用程序所需要的。
然而,在分配速度显着减慢(分页?)之前我最多可以分配 74 GB,而在 86 GB 时我会出现内存不足错误。
我创建了一个非常简单的程序,它只是进入一个循环并一次分配 1GB 内存,它也显示了上述行为。
这是怎么回事?
虚拟机配置是否错误?
我运行“top”并按 M 按内存排序,没有任何东西使用任何大量内存(绝对不是丢失的 46 GB)。
在 ESXi 上运行红帽
答案1
显然,虚拟机的视图并不是整体视图;当尝试在虚拟机中使用 Unix 命令查看内存时,您对环境的了解有限,并且无法全面了解虚拟机管理程序系统。
VMWare 有过度使用的概念,因此如果您看到这种行为,要么有人提供了比虚拟机管理程序更多的内存,要么该主机上的其他虚拟机正在竞争该内存;你看到的慢可能是虚拟机管理程序使用交换代替 RAM。
在一种或另一种情况下,对您来说重要的是虚拟机管理程序肯定没有要求的完整 RAM/没有可供您的 VM 使用。
因此,恐怕您确实需要与负责该 VMWare 主机的管理员会面和/或交谈。
看vmware 技术期刊 - ESX Server 中的内存过量使用更多细节。
ESX 允许用户启动总配置内存超过物理机可用内存的虚拟机 (VM)。这称为内存过量使用。
过度使用是指分配比可用物理资源更多的虚拟资源的能力。 ESX Server 使用户能够过量使用物理机上的内存和 CPU 资源。
与传统操作系统类似,ESX 允许虚拟机以可能超出 ESX 可用内存的总配置内存大小启动。出于本文讨论的目的,ESX Server 中安装的内存称为 ESX 内存。如果虚拟机消耗了所有 ESX 内存,则 ESX 将从虚拟机回收内存。
内存过量使用并不一定会导致来宾操作系统或其应用程序的性能损失。本文中针对两种实际工作负载的实验结果表明,当 ESX 逐渐过度使用时,性能会逐渐下降。