如何让Hyper-V发挥最佳性能?


为新部署的微软Hyper-V环境中的主机和网络挑选合适的硬件并非易事,更不用说在生产环境中衡量和监控性能这项任务了。在本文中,我将剖析组成Hyper-V底层硬件架构的不同部件,先从处理器的配置开始说起,之后会介绍内存、存储和网络等子系统。

然后我们会深入介绍提升性能的方法和技巧、如何选择合适的Hyper-V版本、配置方面的常见问题,最后介绍虚拟机的性能监控以及这与物理环境监控有何不同之处。

注意:所有建议都适用于Windows Server 2008 R2(含服务包1)中的Hyper-V。就可扩展性方面的局限而言,即将推出的Windows Server 8中新的Hyper-V版本有了很大的改进,但是这不是本文探讨的话题。这里给出的建议只适用于最新的Windows版本。

虚拟处理器和逻辑处理器

我接触的IT管理员对于虚拟处理器和逻辑处理器是什么,它们对于某一个物理主机上虚拟机的最大数量有何影响经常存在一种误解。这不仅与分配给虚拟机的处理器数量有关,还与每个主机的物理内存数量直接有关(下一回会介绍)。

逻辑处理器是多核处理器的一个核心,所以一个四核处理器有四个逻辑处理器。如果该四核处理器有超线程(Hyper Threading)技术,它会显示为八个核心;这意味着,你的系统有八个逻辑处理器。尽管微软的说明文档这么介绍逻辑处理器,但是要注意:超线程并不会神奇地让处理器容量翻番。为了稳妥起见,就看核心算作逻辑处理器——如果你启用了超线程技术,其数量也不会翻番。

虚拟处理器是你分配给一个个虚拟机的资源;你能分配多少个虚拟处理器,取决于访客/虚拟机操作系统。在这里,操作系统版本越新,功能就越强;所以Windows 2008/2008 R2能与四个虚拟处理器协同运行,而Windows Server 2003只能被分配一两个虚拟处理器。SUSE Linux企业版、CentOS和红帽企业版Linux(它们都是得到支持的操作系统版本)最多可以被分配四个虚拟处理器。如果你在虚拟桌面基础架构(VDI)环境中运行客户机操作系统,Windows 7最多可以与四个虚拟处理器协同运行,Vista能看到两个虚拟处理器,Windows XP SP3能看到两个虚拟处理器。这里有更详细的信息:http://technet.microsoft.com/en-us/library/cc794868(WS.10).aspx。

就因为你为某一个虚拟机分配了两个或四个虚拟处理器,并不是说你应该这么做。首先,由于跨处理器的通信,在任何多处理器系统中存在一定的开销——无论是物理处理器还是虚拟处理器。但是在较新的操作系统中开销比较低,所以Windows 2008 R2虚拟机使用四个虚拟处理器没什么问题,而Windows Server 2003可能需要进行测试,看看在你的特定环境下使用两个虚拟处理器有没有好处。其次,这完全取决于工作负载——有些应用程序是密集的多线程(想一想SQL Server等类似应用),使用几个虚拟处理器比较好;而单线程应用程序或者只有几个线程的应用程序得到的好处并不大。

另一个常见的误解是,为虚拟机分配一个或多个虚拟处理器与物理核心有关系。为虚拟机分配虚拟处理器其实更像为虚拟机分配一段预定的处理器时间,而虚拟机管理程序实际上把运行虚拟机的负担分摊到所有可用的处理器核心上。

分配给某一个主机上多个虚拟机的虚拟处理器数量与微软的这个建议密切相关:一个系统中每个逻辑处理器的虚拟处理器至少是4个,每个逻辑处理器的虚拟处理器最多是8个。例外情况是:如果你在VDI环境下是清一色的Windows 7虚拟机,支持的最大比率是12;也就是说每个逻辑处理器的虚拟处理器最多可以是12个。

如果你有配备2个四核处理器(即八个逻辑处理器)的Hyper-V主机,那么运行8个虚拟机完全没问题,每个虚拟机有4个虚拟处理器(共32个虚拟处理器)和最多16个虚拟机(共64个虚拟处理器)。如果你为每个虚拟机只分配了两个虚拟处理器,那么在每个虚拟机一模一样的这个例子中把那些数量提高一倍。当然,在实际情况下,不同虚拟机中虚拟处理器的数量会有所不同,具体看里面运行的工作负载。

想查看你主机上虚拟处理器与逻辑处理器的比率,你可以手动查看每一个运行的虚拟机,然后累计被分配的虚拟处理器的总数,这个方法不是很方便。更好的办法就是运行这个简单的PowerShell cmdlet命令,它会给出答案:

write-host (@(gwmi -ns root\virtualization MSVM_Processor).count / (@(gwmi

Win32_Processor) | measure -p NumberOfLogicalProcessors -sum).Sum) "virtual

processor(s) per logical processor" -f yellow

  • 1
  • 2
  • 下一页

相关内容