请问大神Hyper-V如何搭建多核多线程处理器的虚拟机
发布网友
发布时间:2022-04-23 10:59
我来回答
共1个回答
热心网友
时间:2023-10-11 22:53
为新部署的微软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能看到两个虚拟处理器。
就因为你为某一个虚拟机分配了两个或四个虚拟处理器,并不是说你应该这么做。首先,由于跨处理器的通信,在任何多处理器系统中存在一定的开销——无论是物理处理器还是虚拟处理器。但是在较新的操作系统中开销比较低,所以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 rootvirtualization MSVM_Processor).count /
(@(gwmi
Win32_Processor) | measure -p NumberOfLogicalProcessors -sum).Sum)
"virtual
processor(s) per logical processor" -f yellow
多谢微软的虚拟化项目经理Ben Armstrong给出了这个方法。
表明了我启用了超线程技术的四核笔记本电脑上的数值(共8个逻辑处理器),有4个虚拟机在运行,每个虚拟机有4个虚拟处理器。
:使用这个简单的cmdlet命令,很容易搞清楚Hyper-V主机上虚拟处理器与逻辑处理器的比率。
了解你在每个虚拟机上要运行的工作负载和应用程序,这点也很重要:它们是不是受处理器的*还是受内存的*?它们是否得益于多线程,因而是否得益于额外的虚拟处理器?
确保你购买的处理器支持二级地址转换(SLAT),英特尔称之为扩展页表(EPT),AMD则称之为快速虚拟化索引(RVI),AMD早期的说明文档称之为嵌套页表(NPT)。比较旧的处理器不支持SLAT,这意味着每个虚拟机将多占用10MB至30MB的内存,处理器占用率将增加10%或更多。
SLAT可以带来显著的效益,具体视工作负载而定。如果你对远程桌面服务(Remote Desktop
Services)进行虚拟化处理,可能会看到SLAT处理器支持的会话数量最多增加40%。搭载大容量二级缓存和*缓存的处理器也有助于处理要求大量内存的工作负载。
图2:为虚拟机分配虚拟处理器很容易;只要从列表中进行选择即可。
最后,如果你有一个主机,但处理器资源有限,那么你只要使用虚拟机预留设置和虚拟机限额设置,就可以改变诸虚拟机之间的平衡关系;虚拟机预留设置确保了虚拟机总是可以使用这个数量的处理器资源(但*了可以在主机上运行的虚拟机总数),虚拟机限额设置控制着虚拟机可以使用多少被分配的处理器容量,Relative
weight(相对权重)将该虚拟机与其他运行的虚拟机作一平衡;如果这个值比较低,意味着它在竞争时间段获得的资源会比较少。微软的建议是,除非你有充足的理由要改动,否则别去改动这些设置。
还有处理器兼容性设置,让你可以在拥有不同年代处理器的主机之间迁移虚拟机,还让你可以运行版本很老的操作系统,比如Windows NT。