虚拟内存回收

VM与操作系统处理内存分配和释放以相同的方式执行内存分配。客户机操作系统通过向访客空闲列表添加内存页码来释放一块物理内存。

虚拟机管理程序无法访问客户操作系统的空闲列表; 因此,管理程序很难知道何时释放主机物理内存以及何时需要释放客户物理内存。管理程序完全不知道哪些页面是空闲的或分配给客户操作系统,因此,当客户操作系统释放客户物理内存时,它无法回收主机物理内存。

因此,VMware虚拟机管理程序依赖于内存回收技术来回收客户机操作系统释放的主机物理内存。这些是内存回收技术:

透明页面共享(TPS)内存膨胀主机级(或虚拟机管理程序)交换

如何做呢

您不需要执行任何操作来启用,因为认情况下在ESXi虚拟机管理程序上启用它。

内存膨胀由VMware Tools软件驱动,因此您需要在所有VM上安装它。它将加载vmmemctl驱动程序,该驱动程序负责内存膨胀。

如果未安装VMware Tools或已过期,请执行以下步骤:

登录VMware vSphere Web Client。在VM清单中,右键单击VM,选择Guest OS,然后单击Install VMware Tools或Upgrade VMware Tools。转到VM控制台并按照屏幕上的说明安装或升级它。同样,认情况下启用主机级或管理程序交换。您无需执行任何其他步骤即可启用它。

TPS

当在同一个Hypervisor上运行多个VM时,大多数情况下,其中一些虚拟机可能具有相同的内存内容集(称为内存页)。这为跨VM共享内存创造了机会。ESXi Hypervisor可以回收冗余副本,并且只使用TPS保留一个副本。您可以将其视为内存重复数据删除

传统上,在x86系统中,内存被分成4千字节的页面,只有在使用带有影子页面表的小页面时才会发生这种情况。TPS过程每60分钟运行一次。它扫描所有内存页面并为每个内存页面计算哈希值。这些哈希值保存在单独的表中,并由内核进行相互比较。每次ESXi内核找到两个相同的哈希值时,它都会开始逐位比较相应的内存页面。如果这些页面完全相同,则内核只在内存中留下一个页面副本,并删除第二个页面。当您的一个VM请求写入此页面时,内核会创建一个页面,因为一个VM所做的更改不得影响另一个VM的内存内容

VMware ESXi通过Mem.ShareScanTime以随机指定的基本扫描速率随机扫描客户机物理页面。还可以在ESXi的高级设置中指定主机中每秒扫描的最大页数和每个VM扫描页面的最大数(即Mem.ShareScanGHz和Mem.ShareRateMax)。

Memory ballooning

Memory ballooning告诉客户机操作系统它没有足够的主机内存,以便客户机操作系统可以释放一些内存。当存在内存危机时,管理程序会告知balloon驱动程序从客户操作系统请求一定数量的兆字节。管理程序知道balloon驱动程序占用的页面永远不会存储数据,因此balloon驱动程序请求的pRAM页面可以安全地重新分配给其他VM。客户操作系统的调用决定了它应该分配给balloon驱动程序的哪些vRAM页面。如果它有足够的空闲客户物理内存,则不会引起客户级分页,因此不会影响客户端性能,除非客户内存争用。

Balloon驱动程序使用Idle Memory TaxIMT)回收客户操作系统的已分配内存。IMT可以回收高达75%的空闲内存。客户操作系统页面文件是必需的,以防止客户操作系统内核不足。vmmemctl由于严重的主机争用,驱动程序应积极回收内存(确保客户机操作系统页面文件至少为配置的vRAM的65%)。即使在这里,客户操作系统也可以对未来最不可能请求哪些页面的数据进行智能猜测。(您将看到这与管理程序级交换相反,后面将对此进行讨论。)请查看以下内存页映射到主机内存的图示:

在TPS和Ballooning期间,ESXi中的主机级交换不足以回收内存。为了支持这一点,当您启动VM时,虚拟机管理程序会为VM创建单独的交换文件。这主要是因为如果它为其他VM释放pRAM,管理程序可以直接用交换文件交换vRAM。

交换是一种保证在特定时间内回收特定内存量的技术。但是,您应该关注主机级别的交换,因为它会严重影响客户端性能。当管理程序不知道应交换哪些客户机物理页面时,会发生这种情况,并且交换可能会导致与客户机操作系统中的本机内存管理策略发生意外交互。以下是主机级内存页面交换的图形表示:

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...