Hyper-V 动态内存概述

如果你有空闲或低负载的虚拟机(例如在共用虚拟桌面基础结构(VDI)环境中,动态内存使你可以增加整合并提高重启作的可靠性。 还可以通过这些新功能灵活应对要求更改。

主要优势

借助动态内存,可以获取更高的合并数,从而提高重启作的可靠性。 此功能可以降低成本,尤其是在具有许多空闲或低负载虚拟机(例如共用 VDI 环境)的环境中。 动态内存运行时配置更改可以减少停机时间,并提高响应要求更改的敏捷性。

在 Windows Server 上运行的 Hyper-V 会自动计算为管理主机作系统独占使用而保留的内存量。 此内存用于运行虚拟化服务。 如果计算机是故障转移群集的一部分,Hyper-V 还会保留足够的内存来运行故障转移群集服务。

技术概述

动态内存将启动内存定义为虚拟机可以拥有的最小内存量。 但是,在启动期间,Windows 需要比稳定状态更多的内存。 因此,管理员有时会向虚拟机分配额外的内存,因为启动后 Hyper-V 无法从这些虚拟机回收内存。 动态内存引入了最小内存设置,允许 Hyper-V 从虚拟机回收未使用的内存。 此功能反映为虚拟机合并数量增加,尤其是在虚拟桌面基础结构(VDI)环境中。

Windows Server 还引入了用于可靠虚拟机重启操作的智能分页。 尽管最小内存会增加虚拟机合并数,但它也带来了挑战。 如果虚拟机的内存量小于其启动内存,并且重启时,Hyper-V 需要额外的内存来重启虚拟机。 由于主机内存压力或虚拟机状态,Hyper-V 可能并不总是有额外的可用内存。 此限制可能会导致零星虚拟机重启失败。 Smart Paging 桥接了最小内存与启动内存之间的差距,并使虚拟机能够可靠地重启。

用于可靠重启操作的最小内存配置

与以前版本的动态内存一样,可以为虚拟机配置最小内存量,Hyper-V 继续确保始终将此量分配给正在运行的虚拟机。

若要为配置的最小内存小于启动内存的虚拟机提供可靠的重启体验,Hyper-V 使用智能分页。 此内存管理方法使用磁盘资源作为额外的临时内存,当需要更多内存来重启虚拟机时。 此方法的优点和缺点。 它提供了一种可靠的方法,可在没有可用的物理内存时使虚拟机保持运行。 但是,它可能会降低虚拟机性能,因为磁盘访问速度比内存访问速度慢得多。

重要

安装或升级虚拟机的作系统时,安装和升级过程中虚拟机可用的内存量是指定为 启动 RAM 的值。 即使为虚拟机配置动态内存,虚拟机也仅使用 启动 RAM 设置中配置的内存量。 确保在安装或升级过程中, 启动 RAM 值满足作系统的最低内存要求。

为了最大程度地降低智能分页的性能影响,Hyper-V 仅在出现以下所有情况时才使用它:

  • 正在重启虚拟机。
  • 没有可用的物理内存。
  • 无法从主机上运行的其他虚拟机回收内存。

Hyper-V 在以下情况下不使用智能分页:

  • 从“关闭状态”(而不是重启)启动虚拟机。
  • 您为正在运行的虚拟机超量分配内存。
  • Hyper-V 群集中的虚拟机故障转移。

在超额订阅主机内存时,Hyper-V 继续依赖于来宾操作系统中的分页操作,因为这种方法比智能分页更有效。 来宾操作系统中的分页操作由 Windows 内存管理器执行。 Windows 内存管理器比 Hyper-V 主机更了解虚拟机内的内存使用情况,这意味着它能提供更好的信息给 Hyper-V,以便在选择分页内存时使用。 因此,与智能分页相比,系统会产生较少的开销。

为了进一步降低智能分页的影响,Hyper-V 在完成启动过程后从虚拟机中删除内存。 它通过与来宾操作系统内的动态内存组件(“气球”)协调来实现此目标,从而使虚拟机停止使用“智能分页”。 使用此方法时,使用智能分页是暂时的,预计不会持续超过 10 分钟。

请注意以下关于 Hyper-V 使用智能分页的说明:

  • 仅在虚拟机需要时,才会创建智能分页文件。
  • 删除额外的内存量后,它会删除智能分页文件。
  • 除非再次重启且物理内存不足,否则它不会再次为此虚拟机启用智能分页。

运行时动态内存配置更改

Hyper-V 使你能够在虚拟机运行时对动态内存进行以下配置更改:

  • 增加最大内存。
  • 减少最小内存。

关于动态内存设置

Hyper-V Manager 中的以下虚拟机设置允许配置动态内存。 查看以下说明,了解功能的工作原理及其相关方式。

设置 Description
启动 RAM 指定启动虚拟机所需的内存量。 该值需要足够高,以便虚拟机操作系统能够启动,但应尽可能低,以便实现最佳内存利用率,并可能提高资源整合率。
最小 RAM 指定在虚拟机启动时应分配给虚拟机的最小内存量。 将值设置为最低 32 MB,最大可以设置为等于 启动 RAM 值。
最大 RAM 指定此虚拟机可以使用的最大内存量。 将值设置为从启动 RAM 的水平到最高 1 TB。 但是,虚拟机最多只能使用来宾操作系统支持的最大内存量。 例如,如果为虚拟机指定了 64 GB,但其运行的来宾操作系统只支持最多 32 GB,那么虚拟机将无法使用超过 32 GB。
内存缓冲区 指定与虚拟机中运行的应用程序和服务实际需要的内存量相比,Hyper-V 尝试分配给虚拟机的内存量。 内存缓冲区指定为百分比,因为实际内存量表示缓冲区更改,以响应虚拟机运行时内存使用量的变化。 Hyper-V 使用虚拟机中的性能计数器来标识已提交的内存,以确定虚拟机的当前内存要求,然后计算要添加为缓冲区的内存量。 缓冲区使用以下公式确定:内存缓冲区量 = 虚拟机实际需要多少内存/(内存缓冲区值/100)。 例如,如果提交到来宾作系统的内存为 1,000 MB,并且内存缓冲区为 20%,Hyper-V 尝试为分配给虚拟机的总共 1,200 MB 的物理内存分配额外的 20% (200 MB)。 注意: 如果计算机中没有足够的物理内存来为每个虚拟机提供请求的内存缓冲区,则不会维护缓冲区。
内存权重 为 Hyper-V 提供一种方法,用于确定如果计算机中没有足够的物理内存来向每个虚拟机分配所请求的内存量,如何分配虚拟机之间的内存。

动态内存/Hyper-V 内存管理常见问题解答

以下是有关动态内存的一些常见问题。

安装 Hyper-V 角色后,是否需要手动配置页面文件的大小?

否,建议允许系统在运行 Hyper-V 时管理页面文件大小。

主机作系统和正在运行的虚拟机之间的内存是如何划分的?

Hyper-V 监视主机作系统的运行时运行状况,以确定它可以安全地分配给虚拟机的内存量。

我的虚拟机无法启动以下错误消息“系统中没有足够的内存来启动虚拟机”或“无法初始化内存:内存不足(0x8007000E)”。 如何判断虚拟机可用的内存量?

如前所述,Hyper-V 监视主机作系统的运行时运行状况,以确定它可以安全地分配给虚拟机的内存量。

可以在以下性能监视器计数器中查看虚拟机可用的当前内存量: Hyper-V 动态内存均衡器 – 可用内存