云计算技术分享之 VMware vSphere Memory Metrics(内存指标)

vCenter的虚拟机监控选项卡提供了许多有关其使用的各种资源的非常有用的信息。其中之一是Memory,它包含许多指标,一开始可能会混淆,需要知道它们的含义以及如何处理它们。

云计算技术分享之 VMware vSphere Memory Metrics(内存指标)

这里不会描述所有这些内容,但会重点关注最有可能用于故障排除的主要内容。

首先定义一些术语,以避免在下一章中出现混淆。

Host physical memory:指系统上可用的虚拟机管理程序可见的内存。

Guest physicalmemory:指虚拟机中运行的Guest操作系统可见的内存。

Guest virtualmemory:指客户操作系统向应用程序呈现的连续虚拟地址空间。它是在虚拟机内运行的应用程序可见的内存。它由主机物理内存支持,这意味着虚拟机管理程序提供从guest虚拟机到主机内存的映射。

VM监视选项卡的内置内存视图仅包括“Guestvirtual memory”,“ active”,“ Ballooned”和“Granted”。

单击“图表选项”并添加要查看的指标,然后可以将其保存以便稍后通过单击“将选项另存为...”进行快速访问并输入名称。

云计算技术分享之 VMware vSphere Memory Metrics(内存指标)

现在,让我们开始使用内存指标

Consumed

此度量标准用于衡量分配给VM的计算机内存量。消耗的内存表示根据请求分配给VM的主机内存量减去VM间TPS(透明页面共享)所节省的内存量。

计算消耗的主机内存的方法是计算VM访问的唯一块的数量,同时将共享块除以访问它的VM的数量。将总数乘以块大小(即4K)。

这是VMware文档中心的一个很好的例子。虚拟机1触及3个唯一块,但1与虚拟机2共享。

消耗的内存= 2 x 4K + 1 x(4K / 2)= 10K

如果禁用TPS,则块“b”将在主机内存中写入2次,因此虚拟机1的消耗内存值将为12K。请注意,出于安全原因,默认情况下仅为VM内共享启用透明页面共享,因此如果不更改设置,则不同的虚拟机将不共享主机的内存页面(稍后将详细介绍)。

云计算技术分享之 VMware vSphere Memory Metrics(内存指标)

当VM接触尚未分配的内存页时,ESXi将分配内存并将其置于“已消耗”度量标准中。但是,主机很难知道虚拟机何时在guest虚拟机中解除分配页面,因为即使它不再使用,它仍会在主机的内存中保留分配并仍然出现在使用的图形中。

这就是为什么你经常会看到Active和Consumed内存之间存在巨大差异的原因,这就是内存回收方法在争用时发挥作用的地方(稍后会详细介绍)。

从VMware的内存资源管理指南中提取:

“虚拟机内存释放就像操作系统一样,客户操作系统通过将这些内存页码添加到guest虚拟机空闲列表来释放一块物理内存,但”释放“内存的数据可能不会被修改。所有。因此,当释放特定的客户物理内存时,映射的主机物理内存通常不会更改其状态,只会更改来宾空闲列表。

管理程序知道何时为虚拟机分配主机物理内存,因为从虚拟机到主机物理内存的第一次内存访问将导致管理程序可以轻松捕获的页面错误。然而,由于客户操作系统空闲列表通常不可公开访问,因此管理程序很难知道何时在虚拟机内存释放时释放主机物理内存。因此,管理程序无法轻易找到空闲列表的位置并监视其变化。“

Granted

使用此度量标准来度量虚拟机内存。它说明了已提供给VM的guest虚拟机物理内存量。在触及一次VM之前,不会将内存授予VM。与消耗的内存相反,焦点转移到VM而不是主机。授予内存不会考虑VM内页面共享,因为它会查看来宾物理内存。

消耗的内存= 5 x 4K = 20K

云计算技术分享之 VMware vSphere Memory Metrics(内存指标)

如果要运行多个利用TPS共享内存的虚拟机,你会注意到消耗的内存将随着共享内存的增加而下降,而授予的内存保持不变。可以在下图中清楚地看到此模式。

云计算技术分享之 VMware vSphere Memory Metrics(内存指标)

Active

该指标可能是最令人困惑的指标。在采取行动之前了解其意义非常重要,因为它可能会对VM的性能产生意想不到的负面影响。名称似乎是明确的,你会认为“活动内存”代表访客当前使用的实际内存。

不幸的是,它并不像看起来那么简单。

此度量标准的目的实际上是估计访客使用的数量。为了实现这一点,主机需要监控每个被触摸的页面,但是,这样做的开销不值得付出努力。相反,主机将使用采样机制来估计已触摸的内存量。因此它代表VMkernel认为当前VM正在使用的内容。

现在有两个需要注意的事项:

  1. 在采样周期期间,触摸的存储器页面的数量无论它们是否唯一,并且在先前的采样周期中被访问。因此,如果VM的活动内存在10个采样周期内保持1GB,则表示您的VM可能已访问1GB到10GB的RAM,即使vCenter在1GB上显示直线
  2. 度量标准查找已触摸的页面的事实意味着它不一定反映客户操作系统中正在发生的事情。一个明显的例子是SQL数据库,它将部分数据缓存在RAM中。DB可以在RAM中存储20GB但在采样期间只能访问2GB,VM的活动内存值将为2GB但是如果你在Windows中看到你会看到22GB的RAM使用

此度量标准最初是为DRS创建的,用于获取实时资源使用情况,以帮助在主机之间分配负载。由于这些原因,重要的是要了解该度量不得用于容量规划或监视来宾OS的内存使用情况。对于后者,您应该使用像Zabbix这样的“访客感知”工具(即snmp或基于代理)。但是,如果VM具有高“活动内存”计数器,您将知道它正在内存中正常工作。

关于6.5中引入的功能的快速说明,允许您强制DRS使用消耗的内存而不是活动内存。这真是一个很好的功能,我一直在等待,特别是对于那些不会在主机上过度使用内存的客户。

云计算技术分享之 VMware vSphere Memory Metrics(内存指标)

Overhead

开销内存占VMkernel运行虚拟机所使用的机器内存量。其大小取决于虚拟CPU的数量和客户机操作系统的已配置内存。VM需要一定量的内存才能启动,这有资格作为开销内存。

你可以在下面找到这些要求,但请注意,它并未涵盖所有方案,仅包括最常见的方案。

云计算技术分享之 VMware vSphere Memory Metrics(内存指标)

Shared

我们已经在之前的指标中涵盖了一些关于透明页面共享的内容,但还有很多内容可以说。共享内存指标反映了两个或多个虚拟机共享的主机内存页面的数量。如果虚拟机请求已经被另一个VM访问的内存页面,则主机将不会创建新的虚拟机,而是将现有页面映射到VM,如果您愿意,可以进行某种内存重复数据删除。这有利于节省内存并允许更高级别的过度承诺。

ESXi通过运行以间隔扫描机会的后台活动来确定可以共享哪些页面的方式。您拥有的工作负载越多,您的内存共享就越大。可以使用高级设置Mem.ShareScanTime和Mem.ShareScanGHz控制间隔。为了识别哪些页面相似,ESXi会创建它存储在哈希表中的每个页面。当VM请求的页面生成表中已存在的哈希时,VM将映射到内存中的相应地址。

云计算技术分享之 VMware vSphere Memory Metrics(内存指标)

请注意,出于安全原因,默认情况下禁用VM间页面共享,并限制为VM内部。请参阅VMware 资源管理指南中的此摘录。

“出于安全考虑,默认情况下禁用虚拟机间透明页面共享,并且页面共享仅限于虚拟机内存共享。这意味着页面共享不会跨虚拟机发生,只会发生在虚拟机内部。已经引入了盐析的概念,以解决系统管理员可能具有透明页面共享的安全隐患的问题。Salting可用于允许更细粒度地管理参与透明页面共享的虚拟机,而不是以前可能的。使用新的salting设置,只有当页面的salt值和内容相同时,虚拟机才能共享页面。可以配置新的主机配置选项Mem.ShareForceSalting以启用或禁用salting“

关于TPS中盐析概念的快速说明,其中盐值用于生成散列。这意味着通过设置VM高级设置sched.mem.pshare.salt,您可以允许一组VM彼此共享内存。如果您有一堆已知具有类似用途的内存饥饿虚拟机,这可能会很有趣。有关TPS盐渍的更多信息,请访问KB2097593。

Ballooned

我们现在正在进行内存回收技术。

VMware虚拟增长功能利用客户操作系统中安装的VMware工具中包含的气球驱动程序(vmmemctl)释放内存,以便在发生争用时将其返回给主机。请注意,如果已安装的VMware工具未在guest虚拟机中运行,则虚拟机将无法使用虚拟增长。

云计算技术分享之 VMware vSphere Memory Metrics(内存指标)

为了强制guest虚拟机释放内存页面,气球驱动程序将通过增加操作系统上的内存压力(Inflating)来模拟guest虚拟机中的内存争用场景,这将使其使用自己的本机回收方法并释放价值最低的页面。

如果资源非常紧张,它将强制客户操作系统将页面交换到其虚拟磁盘。客户操作系统本身决定交换哪些页面这一事实是一件好事,因为它会选择那些对系统影响最小的页面,而不是主机在强制VM交换到页面时会做的随机页面文件(.vswp),这很可能是重要的和访问量很大的页面,严重阻碍了性能......一旦完成回收,气球驱动程序将停止并将页面返回给主机(放气)。

可以使用高级设置sched.mem.maxmemctl限制气球驱动程序可以回收的内存量。

Compressed

内存压缩是另一种用于容纳过度使用的回收技术,它将尝试压缩内存页并将它们存储在VM内存的一小部分中。如果VM在压缩后需要页面,则这允许比交换更快的访问。如果交换的页面可以压缩到2 KB或更小,它将存储在虚拟机的压缩缓存中,从而增加主机的容量。

云计算技术分享之 VMware vSphere Memory Metrics(内存指标)

但是,如果页面无法压缩,它将被交换到磁盘(请参阅下一章)。用于存储压缩页面的缓存的默认大小是VM内存空间的10%,但可以使用Mem.MemZipMaxPct高级设置(介于5和100%之间)进行更改。

Swapped

当事情开始变味时,内存交换就会发生。这是回收机制方面的最后手段,当TPS,气球和压缩无法节省更多内存时会调用它。它最能影响表演。

我们谈到了在不断膨胀的章节中交换,我们说在这种情况下,交换是由虚拟机内运行的客户操作系统执行的,这意味着它知道要交换的最佳页面。它们将被交换到虚拟磁盘,如果需要它们的性能仍然很糟糕,但这种情况发生的可能性较小(或者它不那么重要)。这种类型的交换不会显示在监视视图中,因为它是在guest虚拟机内完成的。

与交换度量标准的不同之处在于,当气球和压缩完成其工作并且没有更多内存可以清除时,ESXi将开始从VM内存中抓取页面并将其放入其交换文件中的磁盘。当它发生时,没有选择哪个页面最好交换,因为ESXi不知道它们有多重要。它基本上是一个被蒙住眼睛的飞镖游戏,其VM的表现录在了目标上。访问换出页面时的性能将是数据存储的性能。

云计算技术分享之 VMware vSphere Memory Metrics(内存指标)

请注意,默认情况下交换文件与VM一起存储,但您可以在性能更好的存储上指定一个位置,例如SSD支持的数据存储,以便在系统内存不足时缓解一点痛苦。

你还会注意到2种不同类型的交换,无论是写入磁盘还是返回内存。

SwapIn

它指的是从磁盘交换到内存的量。它是自虚拟机启动以来从交换文件读入主机内存的数据量。因此,如果由于内存争用而过去交换的VM不再存在,那么当VM访问正在移回RAM的交换页面时,您将慢慢看到SwapIn增加。

云计算技术分享之 VMware vSphere Memory Metrics(内存指标)

SwapOut

交换是指VMkernel从机器内存写入虚拟机交换文件的数量。如前所述,这与客户操作系统交换不同。

云计算技术分享之 VMware vSphere Memory Metrics(内存指标)

结论

管理内存是一件很棘手的事情,所以希望这篇文章能让你更好地了解它是什么。监视虚拟机内存的最佳方法是在guest虚拟机操作系统中执行此操作。


分享到:


相關文章: