虚拟化之内存性能分析

VMware vSphere主机旨在实现像其他资源一样有效地利用内存资源,在vSphere主机中实施管理策略,以将内存分配给它托管的虚拟机。此分配基于虚拟机的已分配内存设置和当前系统负载。vSphere主机可以使用esxtop查看的不同内存统计信息。简要介绍一下vSphere主机如何管理内存的。

内存过度使用

vSphere主机系统 保留物理内存,以确保向所有正在运行的虚拟机提供内存。系统使用过度使用技术,以确保它可以分配比其容量更多的内存。当虚拟机物理内存总量增加vSphere主机的总量时,将认为vSphere主机的内存过载。您可以通过此示例了解内存过量使用:假设您拥有一个具有8 GB物理内存的主机,并且您正在运行五个虚拟机,每个虚拟机为2 GB。内存过量使用可使vSphere主机系统改善和平衡物理内存的内存使用。我不会进一步详细讨论这个问题,因为这超出了本书的范围。

内存开销

虚拟机有两个内存开销类型:访问虚拟机内存的额外时间(时间开销)和启动虚拟机所需的特定开销内存量。虚拟机的内存总量取决于该虚拟机的vCPU数、已分配的内存数和开销内存数。虚拟机开始运行后,开销内存会有所不同。

1 vCPU VM的总内存=已分配的内存+开销内存

我们应该了解此开销以解决内存开销问题。下表取自VMware vSphere 5.1文档,表中的示例值是在为虚拟机启用MMU的情况下收集的。这些开销值可能与表中列出的值略有不同。

vCPU内存开销

透明页面共享 TPS

VMware ESXi系统可以使用TPS有效地使用物理内存。假设有一些虚拟机运行在通用操作系统; 其中一些可以拥有相同的内存块。ESXi主机可以使用TPS回收相同的内存页,并保留一个内存页以在所有虚拟机之间共享。这会更好的消耗主机内存,并且主机能获得更好的内存使用。

注:默认情况下,在所有vSphere版本中启用TPS,但5.0,5.1,5.5更新除外。在vSphere 6.0及更高版本中,默认情况下禁用TPS。可以从vSphere高级设置启用TPS设置。

内存气球

内存气球是一种内存回收技术,它将消息分派给正在运行的虚拟机,指出hypervisor主机内存不足。vSphere主机使用叫做vmmemctl的内存驱动,在VMware tools安装后内存气球驱动程序可用来回收可用内存。当vSphere主机需要回收虚拟机内存时,它会使用内存气球驱动程序vmmemctl来执行此操作。内存气球驱动vmmemctl程序通过展开气球并在虚拟机中分配客户物理页面来回收内存,从而为驱动程序创建气球大小。驱动程序尝试回收它认为对客户机操作系统不太有价值的内存页。

内存压缩

VMware vSphere主机使用压缩在物理内存中缓存以保存页面,而不是将这些页面交换到磁盘。内存压缩提供了一种更好的页面交换方法,因为主机只需要直接从内存解压缩页面而不是访问磁盘。

参考:https://communities.vmware.com/api/core/v3/attachments/101196/data

通过esxtop分析内存

1.使用SSH连接到vSphere主机,并以root用户或管理用户身份登录。

2.在命令提示符下,键入esxtop。

3.按m进入内存屏幕。屏幕显示有关内存使用的详细信息。

4.在esxtop中为以下字段启用一些额外的内存统计字段:MCTL。

5.按f转到“Current Field Order”屏幕。

6.按j启用MCTL内存统计,然后再按一次以删除此字段。

7.按Esc键返回esxtop内存统计屏幕。

esxtop

比较重要的内存指标:

诊断内存瓶颈

在诊断内存瓶颈和内存过量使用时,内存统计非常重要,由四个阈值表示:hard、low、high、soft。这些指标的阈值取决于vSphere主机具有多少物理内存。

highstate的阈值通过minfree表现。可以在以下截图中看到这一点。VMkernel保留一定量的内存空闲,如图所示minfree

在vSphere主机系统中页面共享(page-sharing)默认启用,它设置以非常小的开销回收内存。它尝试highstate使用交换或气球来确定何时回收物理内存。vSphere主机系统将尝试回收内存资源不足时已分配给虚拟机的内存。当vSphere系统内存不足时,可以检查上述指标以确定vSphere主机系统是否正在尝试回收内存。

如上图所示,vSphere主机正在报告highstate。这意味着vSphere主机目前没有内存争用。如果更改为softstate,则表示vSphere主机将使用虚拟增量来回收内存。如果更改为hardstate,则vSphere主机将使用压缩和交换来回收内存。最后,如果vSphere主机显示lowstate,则所有内存回收方法(气球,压缩,交换)将一起用于回收内存。

主机不应该交换内存,因为这会对虚拟机和vSphere主机的性能本身产生负面影响。这可以从vCenter性能图表中进行监控,以后再介绍这一块。在健康的vSphere主机系统上,前面的值应尽可能低。每当您看到vSphere主机报告softstate,都表明主机存在内存争用问题。可以通过启用MTCLMCTLSZ指标来查看内存气球。如前面所述,Esxtop用于内存统计,启用j字段查看MCTL?和MCTLSZ。如果您的vSphere主机系统的内存状况良好或是时候进行内存升级,这种观察可以为您节省大量时间。

大量内存交换对vSphere主机也不利。如果vSphere主机继续主动交换内存,则会对虚拟机性能下降产生不良影响。您可以通过监视%SWPWT字段来查看虚拟机是否受交换影响。该字段不在内存屏幕中,但可以在CPU屏幕中找到。正如我之前解释的那样,%SWPWT显示了虚拟机在内存中交换其页面的交换等待时间百分比。

你可以看到在上图中%SWPWT是3.57。这表示虚拟机等待其内存页面交换的交换等待时间百分比。将影响虚拟机的性能。此字段的阈值为5,但任何高于零的值都不适合虚拟机的性能。如果达到5,则需要仔细检查原因。

您可以通过检查内存过量使用的原因以及虚拟机之间的分配是否符合可用内存资源来解决此问题。您还应检查内存气球驱动程序是否已正确安装并存在于虚拟机中,以确保正在使用而不是内存硬交换。您应该始终在虚拟机上安装VMtools以确保内存气球的驱动程序工作。

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...