Hyper-V动态内存最佳实践全面概述

Hyper-V动态内存是在Windows Server 2008 R2与SP1中首次引入的。在此之前,Hyper-V虚拟机(VM)启动并运行时会使用分配给它的全部RAM,这导致了内存过度使用并影响了整体VM性能。此外,可用的VM内存量只能在VM关闭时更改。因此,合理地说,静态内存分配必须被动态内存分配所取代,于是引入了Hyper-V动态内存功能。

什么是Hyper-V动态内存?

Hyper-V动态内存是一项功能,允许您为在Hyper-V环境中运行的VM动态分配内存资源。此功能会从当前不需要的VM中回收部分未使用的内存,然后将回收的内存重新分配给实际需要它的其他VM。

使用Hyper-V动态内存,您可以指定VM可以使用的启动内存量,设置特定VM可用物理内存范围,并确定VM的内存分配优先级。物理内存可以在需要时高效地动态分配给VM,并且性能影响最小。因此,您可以更精细地控制内存使用并实现资源优化。

Hyper-V动态内存的优缺点

Hyper-V动态内存是一项有用的功能,具有许多优点,例如:

  • 内存消耗减少,因为虚拟机只使用管理员设置的限制内存量中实际需要的内存量
  • 内存分配效率高,因为您可以动态地为运行中的虚拟机分配更多或更少的内存
  • 由于更有效地利用内存资源,合并数量更高
  • 通过 Hyper-V 智能分页功能增强了重新启动操作的可靠性
  • 成本效益高,因为虚拟机资源不会被浪费

然而,Hyper-V 动态内存也有一些缺点,可能会对虚拟机内存性能产生负面影响。它们包括以下内容:

  • 如果您不在虚拟环境中跟踪内存分配,就可能存在计算机物理内存过度配置的风险
  • 某些内存设置在虚拟机运行时无法更改。因此,在虚拟机仍在运行或暂停时,您不能减少或增加最大和最小内存量,也不能修改虚拟机启动内存量。
  • 启用 Hyper-V 动态内存后,可能会出现与数据库应用程序相关的问题。建议您使用与 Hyper-V 动态内存兼容的应用程序,以避免任何性能问题。

Hyper-V 动态内存设置Hyper-V 动态内存包括五个虚拟机设置,可以在 Hyper-V 管理器中进行配置。为此,打开 Hyper-V 管理器,选择所需的虚拟机,单击设置,然后选择内存。您将看到以下内容:

Hyper-V动态内存包含五个虚拟机设置,可以在Hyper-V管理器中配置。为此,打开Hyper-V管理器,选择所需的虚拟机,点击设置,然后选择内存。您将看到以下内容:

但是,在您开始配置Hyper-V动态内存设置之前,首先建议您了解这些组件的工作原理以及它们可以提供的优势。让我们来看看它们中的每一个。

启动内存

这个Hyper-V动态内存值定义了所选虚拟机在启动时可以使用的最小物理内存量。启动内存应该足够高,以便虚拟机能够快速启动并且没有中断。请注意,当虚拟机运行时,无法更改启动内存。

最小内存

这个Hyper-V动态内存值决定了虚拟机启动后应该分配给它的最小物理内存量。如果其他虚拟机需要额外的RAM,Hyper-V主机可以开始从这个虚拟机回收未使用的内存,直到达到最小内存值。请注意,该值可以设置为低至32 MB,但不能高于启动内存。此外,您不能在虚拟机运行或暂停时增加最小内存,但可以减少它(例如,您可以将最小内存值从512 MB更改为64 MB)。

最大内存

此Hyper-V动态内存值指定了虚拟机(VM)可以使用的最大物理内存量。请注意,此值不能低于分配的启动RAM,但可以高达1 TB(1,048,576 MB)。此外,您不能在VM运行或暂停时减少最大内存量,但可以增加它(例如,您可以将最大RAM值从512 MB更改为2048 MB)。

内存缓冲区

此Hyper-V动态内存值确定应将多少百分比的物理内存分配给VM作为缓冲区。内存缓冲区是根据VM的内存需求预留的一部分物理内存。要计算内存缓冲区,您需要使用以下公式:

内存缓冲区量 = 虚拟机实际需要的内存量 /(内存缓冲区值 / 100)。

默认情况下,内存缓冲区值为20%,但可以设置为低至5%,高至2000%。您可以在任何时候更改内存缓冲区值,即使在VM运行时也可以。

内存权重

此Hyper-V动态内存值指定了所选VM相对于此主机上其他VM的优先级。根据这个优先级顺序,您可以确定如何在同一Hyper-V主机上运行的多个VM之间分配可用内存。

请注意,如果VM的优先级设置得太低,并且可用物理内存量减少,则存在此VM无法启动的风险。您可以在任何时候更改内存权重值,即使在VM运行时也可以。

Hyper-V动态内存最佳实践

为了在Hyper-V环境中实现高性能并提高内存利用率,建议您遵循Hyper-V动态内存的最佳实践。

以下列出的Hyper-V动态内存最佳实践可以显著提高VM内存性能以及您在Hyper-V环境中的整体体验。

启用Hyper-V集成服务

Hyper-V集成服务是一套实用程序,可以在Hyper-V环境中提高VM性能。每个Hyper-V集成服务都必须在主机和来宾中启用,以便它们能够正常工作并按需提供服务。默认情况下,除了Hyper-V来宾服务接口外,所有Hyper-V集成服务都在来宾操作系统上启用。

为了使Hyper-V动态内存有效工作,请确保Hyper-V集成服务已升级到最新版本,并且来宾操作系统支持动态内存功能。否则,Hyper-V可能会因为无法动态提供内存和无法适当地解决内存需求而遇到问题。

自Windows Server 2016发布以来,可以通过Windows Update安装Hyper-V集成服务及其相应的更新。因此,您应该配置您的VM以接收更新,以确保您的Hyper-V基础设施使用最新版本的Hyper-V集成服务。

监控内存使用情况和资源分配

目前市场上有许多Hyper-V管理工具,可以帮助您监控Hyper-V环境中的内存使用情况和资源分配。启用Hyper-V动态内存后,可以超额分配RAM,甚至可能完全耗尽内存。因此,建议您跟踪分配给Hyper-V主机上各个虚拟机的RAM。

为此,您可以使用原生监控工具或购买第三方软件。例如,您可以通过Hyper-V管理器在主机上或通过任务管理器在来宾虚拟机上检查虚拟机内存状态。

这样我们就可以监控系统内内存资源的使用情况。但是,请注意,Hyper-V管理器和任务管理器显示的内存使用情况输出是不同的。来宾监控工具并不显示实际结果,因为来宾虚拟机认为分配给虚拟机的总内存实际上正在被其驱动程序使用。实际上,主机通常更清楚内存是如何在基础设施中的虚拟机之间分配的。未使用的内存实际上被重新分配给其他虚拟机,这在Hyper-V管理器中有所反映。

考虑启动RAM

设置启动RAM的高低会显著影响Hyper-V的性能。您应该增加启动RAM,以确保操作系统和其上运行的应用程序按需启动。这是因为Windows在启动时需要的RAM比操作系统空闲时要多。

此外,在安装或升级操作期间,来宾操作系统可用的RAM量等于启动RAM值。因此,在进行安装或升级之前,确保启动RAM值满足所选操作系统的最小内存要求至关重要。

请注意,如果启动RAM值设置得过高,这可能会对Hyper-V动态内存性能和整体内存使用产生负面影响。因此,建议将512 MB作为来宾操作系统的启动RAM值,以便它可以无中断地启动。

不要忘记内存泄漏

在为特定虚拟机设置Hyper-V动态内存限制时,必须记住,您的基础设施可能会遭受内存泄漏。内存泄漏意味着由于不正确的内存分配,可用内存会逐渐减少。通常发生在应用程序未能释放仅用于临时使用的内存时。如果问题在造成严重损害之前未被检测到,操作系统内存可能会耗尽,应用程序最终将失败。

为了减轻这个问题的负面影响,建议您安装一个监控工具(例如RAMMap),并扫描整个基础设施以查找任何不一致之处,并检测运行应用程序的异常内存使用情况。此外,此类工具可以帮助您确定最适合该特定虚拟机的最小和最大RAM值。

配置最大和最小RAM值

为了确保Hyper-V动态内存按需运行,建议您确定系统无法超越的极限。这样,您的基础设施内的内存利用率就能得到有效控制,意味着虚拟机(VM)不会消耗过多或过少的内存。

仔细设置内存缓冲区值

Hyper-V动态内存的一个最佳实践是分配适当的内存缓冲区值,该值指定了应该为选定的VM提供多少额外的内存。如果内存缓冲区值设置得较高,这额外的内存通常用于大型VM的文件缓存,并在系统内平滑I/O操作。

同时,如果运行的应用程序需要大量物理内存,则应将内存缓冲区值设置得较低。通过降低内存缓冲区值,您可以确保可用内存不会被单个VM完全消耗。

此外,如果已经为VM分配了大量内存,那么它不太可能需要额外的内存。因此,将未使用的内存资源与其他更需要它的VM共享更有意义。

在需要时更新Hyper-V主机

生产工作量在工作时间内大大增加,最终会影响到 Hyper-V 的性能以及资源分配和内存利用率。作为 Hyper-V 动态内存最佳实践之一,建议您监视工作日内内存使用情况的变化。通过检测高低内存使用率周期通常发生的时间,您可以学习如何充分利用 Hyper-V 动态内存。

在实际需要时启用 Hyper-V 动态内存

虽然 Hyper-V 动态内存是一个非常有用的功能,可以改善物理内存的使用,但在某些情况下,静态内存分配是更可取的选择。因此,您应该考虑 Hyper-V 动态内存是否需要在特定虚拟机上启用。例如,一些应用程序在拥有预先确定的内存量时表现更好,而且可以在不受干扰的情况下使用该内存量。尽管内存需求波动,但预分配的内存量保持不变。

因此,建议您提前规划 Hyper-V 环境中物理内存的分配方式,以防止内存不足并避免未来应用程序失败。仅与兼容应用程序一起使用 Hyper-V 动态内存

尽管Hyper-V动态内存是一个极其有用的功能,它能提高物理内存的使用效率,但在某些情况下,静态内存分配是更可取的选择。因此,您应该考虑是否需要在特定的虚拟机上启用Hyper-V动态内存。例如,某些应用程序在它们能够无中断地使用预先确定的RAM量时表现更好。预分配的RAM量保持不变,尽管内存需求有所波动。

因此,建议您提前规划如何在您的Hyper-V环境中分配物理内存,以避免将来出现RAM不足和应用程序故障的情况。

仅与兼容的应用程序一起使用Hyper-V动态内存

在您的Hyper-V主机或客户机上安装任何应用程序之前,请确保该应用程序可以与Hyper-V动态内存一起使用。为了检查此类信息,建议您首先阅读产品支持文档,了解其功能和系统要求。这种预防措施可以帮助您避免可能出现的内存使用和分配问题。

总结

在了解 Hyper-V 动态内存最佳实践之后,您可以更高效、更安全地使用物理内存。然而,您的虚拟基础设施仍然面临各种危险和威胁,可能会影响其性能。为了确保虚拟环境的安全,使用数据保护解决方案是最可行的选择。NAKIVO 备份与复制是一种可靠、有效且价格实惠的解决方案,提供虚拟机备份、复制、云备份、备份复制、站点恢复以及丰富的功能集。

Source:
https://www.nakivo.com/blog/full-overview-hyper-v-dynamic-memory-best-practices/