虚拟化之内存性能分析

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以确保内存气球的驱动程序工作。

原文地址:https://www.toutiao.com/article/6685518553417777676/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340