vSphere Web Client性能选项卡显示了可用于分析内存使用情况的多个衡量指标。

某些内存衡量指标用于衡量客户机物理内存,而另一些衡量指标用于衡量计算机内存。例如,可以使用性能衡量指标检查的两种内存使用情况是客户机物理内存和计算机内存。可以使用“已分配的内存”衡量指标(对于虚拟机)或“共享的内存”(对于主机)衡量客户机物理内存。但是,要衡量计算机内存,需要使用“消耗的内存”(对于虚拟机)或“共享的公用内存”(对于主机)。了解这些类型的内存使用情况之间的概念性差异对知道这些衡量指标的衡量对象以及如何对其进行解释十分重要。

VMkernel 会将客户机物理内存映射到计算机内存,但是它们不总是一对一映射。它可能会将客户机物理内存的多个区域映射到计算机内存的同一区域(当存在内存共享时),或者未将客户机物理内存的特定区域映射到计算机内存(当 VMkernel 换出或虚拟增长客户机物理内存时)。在这些情况中,单个虚拟机或主机的客户机物理内存使用情况和计算机内存使用情况的计算有所不同。

请考虑下图中的示例,该图中显示了在一台主机上运行的两台虚拟机。每块代表 4 KB 内存,每个颜色/字母代表相应块上的数据集。

图 1. 内存使用情况示例


此图说明了两个虚拟机的内存使用情况的示例。

可以按照如下方式确定虚拟机的性能衡量指标:

  • 要确定虚拟机 1 的“已分配的内存”(映射到计算机内存的客户机物理内存量),请计算虚拟机 1 的客户机物理内存中的块(含有指向计算机内存的箭头)的数量并乘以 4 KB。由于有 5 个块含有箭头,因此“已分配的内存”是 20 KB。

  • “消耗的内存”是分配给虚拟机的计算机内存量,包括从共享的内存中节省的内存量。首先,计算计算机内存中的块(含有从虚拟机 1 的客户机物理内存指出的箭头)的数量。这样的块有三个,但有一个块与虚拟机 2 共享。因此,计算两个完整的块加上半个第三个块并乘以 4 KB,得到总计 10 KB 的“消耗的内存”。

这两个衡量指标之间的重要差异是:“已分配的内存”计算带箭头的客户机物理内存级块的数量,“消耗的内存”计算带箭头的计算机内存级块的数量。由于内存共享,这两个级别的块的数量不同,因此“已分配的内存”和“消耗的内存”也不同。这并不表示存在问题,而是表示内存是通过共享或其他回收技术节省的。

在确定主机的“共享的内存”和“共享的公用内存”时,会获得类似的结果。

  • 主机的“共享的内存”是每个虚拟机“共享的内存”的总和。通过查看每个虚拟机的客户机物理内存并计算含有指向计算机内存块(计算机内存块本身也含有多个指向自己的箭头)的箭头的块数量,可计算此内存总和。在本示例中,这样的块有六个,因此主机的“共享的内存”是 24 KB。

  • “共享的公用内存”是由虚拟机共享的计算机内存量。要确定此内存量,可查看计算机内存,并计算有多个箭头指向自身的块数量。这样的块有三个,因此“共享的公用内存”是 12 KB。

“共享的内存”涉及到客户机物理内存,即作为箭头起始点。而“共享的公用内存”涉及到计算机内存,即作为箭头的目标点。

用于衡量客户机物理内存和计算机内存的内存衡量指标可能会出现矛盾。事实上,它们衡量的是虚拟机内存使用情况的不同方面。通过了解这些衡量指标之间的差异,可以更好地利用它们来诊断性能问题。