首页 > 代码库 > Hyper-V性能-CPU分配
Hyper-V性能-CPU分配
为新部署的微软Hyper-V环境中的主机和网络挑选合适的硬件并非易事,更不用说在生产环境中衡量和监控性能这项任务了。在这里,我和大家谈谈服务器的核心CPU与Hyper-V的结合是如何相得益彰的。
我接触的IT管理员对于虚拟处理器和逻辑处理器是什么,它们对于某一个物理主机上虚拟机的最大数量有何影响经常存在一种误解。这不仅与分配给虚拟机的处理器数量有关,还与每个主机的物理内存数量直接有关。
逻辑处理器是多核处理器的一个核心,所以一个四核处理器有四个逻辑处理器。如果该四核处理器有超线程(Hyper Threading)技术,它会显示为八个核心;这意味着,你的系统有八个逻辑处理器。尽管微软的说明文档这么介绍逻辑处理器,但是要注意:超线程并不会神奇地让处理器容量翻番。为了稳妥起见,就看核心算作逻辑处理器——如果你启用了超线程技术,其数量也不会翻番。
虚拟处理器是你分配给一个个虚拟机的资源,你能分配多少个虚拟处理器,取决于访客/虚拟机操作系统。在这里,操作系统版本越新,功能就越强,所以Windows 2008/2008 R2能与四个虚拟处理器协同运行,而Windows Server 2003只能被分配一两个虚拟处理器。SuSE Linux企业版、CentOS和红帽企业版Linux(它们都是得到支持的操作系统版本)最多可以被分配四个虚拟处理器。如果你在虚拟桌面基础架构(VDI)环境中运行客户机操作系统,Windows 7最多可以与四个虚拟处理器协同运行,Vista能看到两个虚拟处理器,Windows XP SP3能看到两个虚拟处理器。
就因为你为某一个虚拟机分配了两个或四个虚拟处理器,并不是说你应该这么做。首先,由于跨处理器的通信,在任何多处理器系统中存在一定的开销——无论是物理处理器还是虚拟处理器。但是在较新的操作系统中开销比较低,所以Windows 2008 R2虚拟机使用四个虚拟处理器没什么问题,而Windows Server 2003可能需要进行测试,看看在你的特定环境下使用两个虚拟处理器有没有好处。其次,这完全取决于工作负载——有些应用程序是密集的多线程(想一想SQL Server等类似应用),使用几个虚拟处理器比较好;而单线程应用程序或者只有几个线程的应用程序得到的好处并不大。
另一个常见的误解是,为虚拟机分配一个或多个虚拟处理器与物理核心有关系。为虚拟机分配虚拟处理器其实更像为虚拟机分配一段预定的处理器时间,而虚拟机管理程序实际上把运行虚拟机的负担分摊到所有可用的处理器核心上。分配给某一个主机上多个虚拟机的虚拟处理器数量与微软的这个建议密切相关:一个系统中每个逻辑处理器的虚拟处理器至少是4个,每个逻辑处理器的虚拟处理器最多是8个。例外情况是:如果你在VDI环境下是清一色的Windows 7虚拟机,支持的最大比率是12;也就是说每个逻辑处理器的虚拟处理器最多可以是12个。
如果你有配备2个四核处理器(即八个逻辑处理器)的Hyper-V主机,那么运行8个虚拟机完全没问题,每个虚拟机有4个虚拟处理器(共32个虚拟处理器)和最多16个虚拟机(共64个虚拟处理器)。如果你为每个虚拟机只分配了两个虚拟处理器,那么在每个虚拟机一模一样的这个例子中把那些数量提高一倍。当然,在实际情况下,不同虚拟机中虚拟处理器的数量会有所不同,具体看里面运行的工作负载。
没有必要不建议跨NUMA使用多颗CPU核心,最好只使用单个NUMA节点下最大的逻辑CPU数量,因为这涉及到vCPU的调度,造成内存性能的下降。
最后,如果你有一个主机,但处理器资源有限,那么你只要使用虚拟机预留设置和虚拟机限额设置,就可以改变诸虚拟机之间的平衡关系;虚拟机预留设置确保了虚拟机总是可以使用这个数量的处理器资源(但限制了可以在主机上运行的虚拟机总数),虚拟机限额设置控制着虚拟机可以使用多少被分配的处理器容量,Relative weight(相对权重)将该虚拟机与其他运行的虚拟机作一平衡;如果这个值比较低,意味着它在竞争时间段获得的资源会比较少。微软的建议是,除非你有充足的理由要改动,否则别去改动这些设置。
还有处理器兼容性设置,让你可以在拥有不同年代处理器的主机之间迁移虚拟机,还让你可以运行版本很老的操作系统,比如Windows NT。
From:http://blog.chinaunix.net/uid-27213548-id-3293763.html