动态内存是Hyper-V最大的“我也可以”功能之一,它可以让微软与VMware公司的步伐保持一致。信不信由你,VMware虚拟系统超量使用内存的能力曾经是微软争议的热点,过去微软声称该功能会耗费虚拟机的资源。但是即将发布的Windows Server 2008 R2 SP1将引入这个功能,这意味着有效利用资源或越过内存整合提高性能的决策权现在就落在Hyper-V管理员身上了。
当内存分配给虚拟机后,主机把系统的可用RAM分给虚拟机。到目前为止,Hyper-V内存一直都是静态资源。如果你分配了4 GB,那么就是4GB;但是你不能超量使用你拥有的物理内存。
实际上,许多虚拟机并没有充分利用它们的可用RAM,就像它们没有充分利用它们的处理器一样。但是有了动态内存功能,我们就可以重新整理资源,让内存物尽其用,达到更好的内存整合和更高的管理效率。
这跟标准PC中虚拟内存使用的页面文件没什么不同。所有的现代操作系统在程序不知道的情况下都能在物理内存和硬盘上的页面文件之间交换数据。这允许我们一次性运行多少设备,同时运用针对此时运行设备的RAM,同样的说法在运行多外虚拟机时也能用在虚拟主机上。这种情况通常很不错,但是有经验的人都知道:系统内存不足、页面文件上的负载太多的话,系统性能会受到影响。
这也可以转化成虚拟化,因为如果不好好考虑如何对动态内存进行设置的话,某些需要快速访问内存的系统性能会下降。
动态内存设置表格
动态内存为这种复杂的内存管理带来了自动化,但是它跟Vmware公司的内存超量使用功能不尽相同。你在虚拟机上开启动态内存的时候需要做几项手动设置。首先,启动RAM设置,这是访客操作系统启动时需要的内存容量。尽管使用推荐RAM设置似乎有意义,但是实际上它应该是操作系统启动所需要的最小内存容量加上开启应用程序所需要的RAM容量。
比如,Exchange Server 2010至少需要4 GB的系统RAM。即使你用8GB来运行一个性能系统,而操作系统和应用程序需要的最低RAM是4 GB,那么启动RAM设置就是4GB。请把该设置与操作系统和应用程序启动所需要的最低RAM容量保持一致。
最大RAM设置是Hyper-V可以为虚拟机提供的最大RAM容量。其默认设置为64GB RAM,这使得父分区有足够的内存分配给访客系统。这很不错,因为Hyper-V会根据有多少容量可以分配来做决定。有时,应用程序会要占用全部内存。在这些情况下,把你的最大RAM设置设成你想分配给应用程序和操作系统的最大内存容量。此时也是让最大RAM设置与你的应用程序设置相一致的好时机。
内存缓冲区不是以Mb计算的量,而是Hyper-V尝试保留为高于当时提交内存的额外值的内存百分比。因此,如果动态内存为虚拟机分配了1.2GB的RAM,而内存缓冲区设成了20%,那么还会有额外的300MB内存,Hyper-V会试图保留1.5GB的内存总量。
如果需要使用内存,程序就可以先使用这部分预留内存,而不必等待内存分配。如果你的一个应用程序需要较大的内存峰值,你应该把这个百分比设置得比默认值高,以便提供快速的内存访问。预留这个缓冲区的能力取决于主机上所有虚拟机对可用物理内存的要求,所以内存缓冲区在繁忙的Hyper-V服务器上不能保证。
你需要考虑的最后一项设置是内存优先级。当物理内存受到限制时,该设置有助于确定哪个设备优先使用内存。此设置可以是1到10000之间的任意值。这是一个相当大的范围,但是该设置的意味着当内存不够的时候,数值大的将会优先得到内存。低优先级的虚拟机内存会被系统剥夺,然后分配给更高优先级的虚拟机。
默认内存优先级设置是5000,正好是中间值。如果你的系统具有严格的性能要求,请提高该设置的数值,并降低其他系统的优先级。如果你想要使用这个设置为每个机器设定严格的优先级,请务必根据确定的数量或者预先确定的服务级别协议(SLA)做决定,并保持跟踪。
#p#
什么时候使用动态内存
尽管动态内存可以让单个主机管理更多的服务器,但有时候你还是想使用旧的静态设置。如果有应用程序使用预先定义的RAM容量取得了最好的性能,那么就可以用静态设置保持它使用的RAM数量不变。
比如,如果一个应用程序始终使用6GB内存,我们没有必要再让该虚拟机去参加动态内存的算法了。举个例子,虽然SQL Server可以设置使用特定内存量,但是默认值就是可用的最大内存,请保存该设置吧。
最后的考虑
作为Windows Server 2008 R2 SP1的首要新功能,动态内存继续证明了微软的承诺:Hyper-V是一个可行的解决方案,也是Vmware的竞争对手。请记住,你的虚拟机必须装有最新的集成工具来使用新设置,而且如果操作系统是Windows 7 或者Server 2008 R2,你需要安装SP1。此外,一个集群中的所有主机都必须运行SP1,以便统一利用动态内存功能。
最后,请一定要制定合理的内存使用计划,这样你的机器就不会缺少RAM;而在内存不足的系统中,你可以使用动态内存作为智能代理,进行高级内存管理,不然虚拟主机的文件交换会很慢。
【编辑推荐】