ESXi 服务器中的内存是如何分配的?

Sam*_*abu 17 virtualization virtual-machines vmware-esxi

我们有一个带有 48 GB RAM 的 ESXi 4.1 服务器。

对于每个 VM,我们分配了 4GB 的内存。由于服务器将有 13 个虚拟机,我的经理认为这是错误的。

我将向他们解释 ESXi 实际上会自行管理内存,但他们问我为 ESXi 服务器本身分配了多少内存。

我没有分配任何(我什至没有听说过为 ESXi 服务器本身分配内存的选项)。

如何为 ESXi 服务器分配内存?它如何在虚拟机之间过度分配/分配 RAM 没有问题?

M A*_*ifi 27

这里不仅仅是有问题的 ESXi,

  1. 每个 VM 将消耗多达 4GBs +“开销”,此处记录。这取决于 vCPU,+ 分配的内存。每个 VM 至少将使用 4261.98 MB (4096 + 165.98)
  2. ESXi 自身的内存开销,这取决于硬件。最简单的选择是查看vSphere 客户端中的系统内存使用情况。从记忆中我记得它大约是 1.3GB 标记,但如前所述,这非常依赖于硬件。

内存分配和过量使用说明

请注意,管理程序不会预先分配所有内存,这取决于 VM 的使用情况。然而,了解如果虚拟机尝试分配和使用分配给它们的所有内存会发生什么是值得的。

您的 VM + 主机将尝试使用的最大值约为,55 GB 的 里程可能会有所不同

  • ESXi 使用的 1.3 GB
  • 4261.98 MB * 13 由 VM 使用

还有另一个方面需要考虑,那就是内存阈值。默认情况下,VMware 的目标是拥有 6% 的空闲空间(高内存阈值)。因此需要将55 GB的已用内存减少到~45 GB

这意味着如果虚拟机使用它们分配的内存,主机将有大约 10,500 MB 的内存需要从某处回收。ESX 需要通过三件事来找到额外的 10.5 GB。

内存回收方法

  1. 透明页面共享
  2. 内存膨胀
  3. 管理程序交换

您应该阅读并理解了解 VMware® ESX™ Server 中的内存资源管理

取决于大量因素,这三者的组合将/可能发生在过度承诺的主机上。您需要测试您的环境并监控这些指标以了解过度提交的影响。

一些值得了解的粗略规则(均在上述论文和其他来源中)。

  1. 使用 2/4 MB 页面的 VM 不会发生透明页面共享。由于您已为 Windows VM 分配了 4096 MB,因此默认情况下它们将使用 2/4 MB 的页面(取决于 PAE)。只有在内存压力下,VMware 才会将大页面分解为可以共享的 4 KB 页面。TPS 依赖于使用空闲 CPU 周期并以一定速率扫描内存页面。它相对较慢地返回内存(想想一小时而不是几分钟)。因此,启动风暴将意味着 TPS 不会帮助您。从这三个方面来看,这对性能的影响最低。更多来自文件,

在硬件辅助内存虚拟化(例如,Intel EPT Hardware Assist 和 AMD RVI Hardware Assist [6])系统中,ESX 将自动支持具有大型主机物理页面(2MB 连续内存区域而不是常规页面的 4KB)的访客物理页面由于更少的 TLB 未命中,性能更好。在这样的系统中,ESX 不会共享那些大页面,因为:1) 找到两个内容相同的大页面的概率很低,2) 对 2MB 页面进行逐位比较的开销远大于对于 4KB 页面。但是,ESX 仍然为每个大页面中的 4KB 页面生成哈希。由于 ESX 不会换出大页面,因此在主机交换期间,大页面将被分解成小页面,以便这些预先生成的散列可用于在交换出小页面之前共享小页面。简而言之,在主机内存过载之前,我们可能不会观察到硬件辅助内存虚拟化系统的任何页面共享。

  1. 接下来开始膨胀(阈值是可配置的,默认情况下,这是当主机的可用内存少于 6% 时(介于高和软件之间))。确保安装驱动程序,并注意 Java 和托管应用程序。操作系统不知道垃圾收集器接下来会做什么,它最终会命中已交换到磁盘的页面。对于专门运行 Java 应用程序的服务器来说,完全禁用交换以保证不会发生这种情况并不少见。 查看 vSphere 内存管理的第 17 页,SPECjbb

  2. 管理程序交换,这三种方法是唯一一种保证“内存”在设定时间内可供管理程序使用的方法。如果 1 和 2 没有给它足够的内存以保持在阈值(默认为 2% 可用内存)以下,则将使用此选项。当您通读性能指标时(自己做),您会意识到这是三者中表现最差的。旨在不惜一切代价避免它,因为性能影响在几乎所有应用程序中都将非常显着,达到两位数

  3. 还有一种状态需要注意(默认为 1%)。从手册上看,这会大大降低你的表现,

在主机空闲内存低于低阈值的极少数情况下,虚拟机管理程序会继续通过交换和内存压缩来回收内存,并额外阻止所有内存消耗超过其目标内存分配的虚拟机的执行。

概括

强调压力的关键点是无法从白皮书中预测您的环境将如何表现。

  1. TPS能给你多少钱?(取决于您的 VM 与其操作系统、Service Pack 和正在运行的应用程序的相似程度)
  2. 您的 VM 分配内存的速度有多快?他们做的越快,在影响较小的内存回收计划成功将您保持在当前阈值之前,您就越有可能跳到下一个阈值。
  3. 根据应用程序的不同,每种内存回收方案都会产生广泛不同的影响。

测试您的平均场景,您是 95% 的百分位场景,最后是您的最大值,以了解您的环境将如何运行。


编辑 1

值得补充的是,使用 vSphere 4(或 4.1 无法回忆),现在可以将虚拟机管理程序交换放置在本地磁盘上,但仍然可以移动虚拟机。如果您使用共享存储,我强烈建议您默认将管理程序交换文件移动到本地磁盘上。这可确保当一台主机面临严重内存压力时,它最终不会影响同一共享存储上的所有其他 vSphere 主机/虚拟机。

编辑 2

根据评论,ESX 不会预先以粗体分配内存...

编辑 3

解释了更多关于内存阈值的信息。