动态内存是一种新 Hyper-V 功能,可帮助您更有效地使用物理内存。使用动态内存,Hyper-V 将内存视为一种可在运行的虚拟机之间自动重新分配的共享资源。动态内存基于内存需求的变化和您指定的值,调整可供虚拟机使用的内存量。
动态内存可帮助您更有效地使用内存资源。在引入此功能之前,要更改可供虚拟机使用的内存量,只能在关闭虚拟机时完成。使用动态内存,Hyper-V 可依据在虚拟机内运行的工作负载或应用程序所需的内存量的变化,动态地为虚拟机提供更多或更少的内存。因此,Hyper-V 能够在配置了动态内存的正在运行的虚拟机之间更加有效地分配内存。取决于工作负载等因素,此效率可能支持在一个物理计算机上同时运行更多虚拟机。
支持的操作系统:
l Windows Server 2008 R2 SP1
l Windows 7 SP1
l Windows Server 2008 with Service Pack 2 (SP2)
l Windows Vista with Service Pack 1 (SP1)
l Windows Server 2003 R2 with Service Pack 2 (SP2)
l Windows Server 2003 with Service Pack 2
启动 RAM:
指定启动虚拟机所需的内存量。该值需要足够高,以允许来宾操作系统启动,但应该尽可能低,以实现最优的内存利用和可能更高的整合率。
最大可用内存:
当你的系统是Win7 32位的时候,如果你在Hyper-V里面分配给此系统8G内存,那么这个系统也只能用到4G内存,这是因为本身系统的限制。
内存缓冲区:
内存缓冲区大小 = 虚拟机实际内存量/内存缓冲区值%
内存权重:
如果计算机中没有足够的物理内存可用来为每个虚拟机提供它请求的内存量,该参数为 Hyper-V 提供一种方式来确定如何在虚拟机之间分配内存。即当Hyper-V服务器本身没有足够的内存的时候,我们可以设置对应的内存权重和Windows系统进程高、中、低权重一样。
注意:您只能在虚拟机关闭时更改 RAM 量,但可以在任何时刻更改缓冲区和权重。
要确定虚拟机的内存使用情况
计算内存使用
在虚拟机上启用动态内存后,分配给虚拟机的内存量就会依据需求而更改。将虚拟机配置为使用动态内存时,可通过两种基本方式来评估虚拟机的内存使用变化情况:
1、您可以通过审查 Hyper-V Manager 的详细信息窗格,查看最新的信息。
2、您可以添加性能计数器并监视它们,以查看在特定时间段内的内存使用变化。
在 Hyper-V Manager 中实时查看变化
向运行 Hyper-V 的服务器应用 SP1 后,Hyper-V Manager 的虚拟机窗格中将显示 3 个新列。您可
以使用这些列查看最新的信息,通过观察它们来了解在执行各种操作时的值变化。
分配的内存:显示此时分配给虚拟机的物理内存量。
内存需求:显示虚拟机此时需要多少内存来满足虚拟机中运行的活动进程的需求。此内存量基于从性能计数器获得数据来表示总共使用的内存量。
内存状态:表示为虚拟机指定的在此时可供虚拟机使用的缓冲区内存量。状态将报告为以下其中之一:
1)“良好”表示有足够的物理内存可用于为虚拟机提供缓冲区的全部内存量。
2)“低”表示当前分配给虚拟机作为缓冲区的内存量低于 Hyper-V 确定应该可用作缓冲区的内存量。
3)“警告”表示没有足够的物理内存可用于将任何内存缓冲区分配给虚拟机。
使用性能计数器监视内存分配
SP1 包含新的 Hyper-V 性能计数器,它们可监视为利用动态内存启用的虚拟机分配了多少内存。新性能计数器包含在两个新 Hyper-V 性能计数器组中:Hyper-V Dynamic Memory Balancer 和 Hyper-V Dynamic Memory VM。您可以使用这些组中的性能计数器创建数据收集器集,可使用数据收集器集捕获和分析性能计数器收集的数据。例如,您可以计划重复的数据收集器集合来创建日志,将它加载到性能监视器中来实时查看数据,以及将它保存为模板以供其他计算机上使用。
要创建数据收集器集来监视内存分配
1、启动性能监视器并添加一个或多个新性能计数器。
2、单击“开始”,右键单击“计算机”,然后单击“管理”。在 Microsoft 管理控制台导航树中,单击“可靠性和性能”。
3、在导航树中,展开“可靠性和性能”,展开“监视工具”,然后单击“性能监视器”。
4、在性能监视器图形显示区上方的菜单栏中,单击“添加”按钮 (+) 或右键单击图形中的任意位置并单击菜单中的“添加计数器”。将打开“添加计数器”对话框。
5、在“可用的计数器”一节中,滚动列表以找到 Hyper-V Dynamic Memory VM,然后单击加号 (+) 以展开该组。从此组中选择一个或多个计数器,比如“Current Pressure”和“Guest Visible Physical Memory”,然后单击“添加”。单击“确定”关闭对话框。
6、右键单击性能监视器显示窗格中的任意位置,指向“新建”,单击“数据收集器集”。将启动“创建新数据收集器集向导”。创建的数据收集器集将包含在当前性能监视器视图中选择的所有数据收集器。
7、为数据收集器集键入一个名称并单击“下一步”。
8、“根目录”将包含数据收集器集收集的数据。如果您希望将数据收集器集数据存储在默认位置以外的位置,更改此设置。浏览并选择该目录,或者键入目录名称。
9、单击“下一步”定义用于运行数据收集器集的用户,或者单击“完成”保存当前设置并退出。
关于使用数据收集器集的更多信息,请参阅 Windows Server 性能和可靠性监视分步指南 (http://go.microsoft.com/fwlink/?LinkId=196705) 中的“场景 3:从性能监视器创建数据收集器集”。
Hyper-V Manager 中不会显示实时内存信息
如果 Hyper-V Manager 的“详细信息”窗格中针对一个利用动态内存启用且正在运行的虚拟机的内存列是空的,请检查以下设置:
审阅本指南的“需求”一节,确认来宾操作系统支持动态内存。然后,确认来宾操作系统已正确配置。例如,集成服务已升级或服务包已应用。
如果您在执行所有需要的配置之前启用了动态内存,重新启动虚拟机。
虚拟机使用了太多内存
如果启用了动态内存的虚拟机看似使用了太多内存,或者在物理计算机没有足够的可用内存时未释放内存,您可通过为最大 RAM 设置分配较低的值,限制该虚拟机使用的内存量。
您可能已注意到,来宾操作系统中的任务管理器所报告的 RAM 量在虚拟机使用较少 RAM 时没有减少。发生此情况是因为,驱动程序报告了来宾操作系统自启动以来使用的最大内存量。
性能不足解决方法
在虚拟机上启用动态内存后,如果您对性能不满意,执行以下一种或多种配置更改可以改善性能。
增大来宾操作系统中的页面文件大小。更大的页面文件允许在突然有需求时向正在运行的虚拟机添加更大量的内存。这也会在可用的物理内存有限时改善性能。
增加为虚拟机配置的内存缓冲区。当存在较大的内存缓冲区时,会为虚拟机分配比在虚拟机内运行的应用程序和服务需要的内存量更大的内存。这部分多余的内存可用于文件缓存,可能有助于改善 I/O 操作密集的应用程序和服务的性能。
增大虚拟机的启动 RAM。一些应用程序会基于应用程序启动时可用的内存来分配固定的内存量。这些应用程序在具有更高的启动 RAM 值时具有更高的性能。如果从虚拟机删除太多内存而导致了糟糕的性能,增大启动 RAM 的值也可能修复此问题。
注意:增大启动 RAM 的值会降低动态内存的总体灵活性和有效性。
提高虚拟机的内存权重。Hyper-V 会先将可用的物理内存分配给此虚拟机,然后再将它分配给内存权重更低的虚拟机。
内存量没有增加
在启用了动态内存的虚拟机上,如果内存量没有增加,请检查以下设置:
对比“最大 RAM”值与“分配的内存”值,查看虚拟机是否在最大内存量下运行。
检查虚拟机所在的物理磁盘上的可用空间。(默认位置为 C:\ProgramData\Microsoft\Windows\Hyper-V。)当将内存添加到虚拟机时,动态内存会增加保存的状态文件的大小。
管理操作系统中的可用内存太少
Hyper-V 会自动计算供管理操作系统独自使用的保留内存量。如果计算机位于一个故障转移群集中,Hyper-V 也会保留足够的内存来运行故障转移群集服务。但是,如果管理操作系统还运行其他角色或功能,那么保留的内存量可能太少。您可以修改注册表来指定较大量的内存。
1、单击“开始”,单击“开始搜索”框,然后键入 regedit 并按回车键。
2、如果显示“用户帐户控制”框,请单击“是”。
3、在导航树中,依次展开 HK_LOCAL_MACHINE、SOFTWARE、MICROSOFT、WINDOWS NT 和 CurrentVersion。
4、右键单击 Virtualization,指向“新建”,单击 DWORD。将新值命名为 MemoryReserve。
5、右键单击 MemoryReserve 并单击“修改”。在“值数据”下,将值设置为您希望保留的内存量。
来宾操作系统没有创建完整的内存转储文件
页面文件必须足够大,以存储转储文件。当启用动态内存时,来宾操作系统使用为虚拟机配置的启动内存值来确定页面文件的大小。要确保页面文件足够大,可存储完整的内存转储文件,可以将页面文件的大小设置为为虚拟机配置的最大内存。
附录:内存设置
下表列出了在启用了动态内存时,支持的来宾操作系统的建议启动 RAM。