我目前有一个运行在2 x四核处理器的物理服务器上的IIS应用程序池,所有核心的平均利用率为50%。 我需要使这个应用程序高度可用,在研究了我们的选项后,我决定在虚拟机中使用此应用程序创buildHyper V群集。
我担心的是虚拟机只有4个vCPU,根据我之前看到的另一个Hyper V服务器的特性,似乎1个vCPU只能最大化一个物理CPU的核心。 即使vCPU为100%,也不能利用其他物理内核的处理能力。 如果这个观察是正确的,那么根据我目前在8个内核上的50%利用率(不考虑虚拟化本身固有的开销),我已经可以利用4个内核的100%了。
在研究中,我观察了有关Hypervisor CPU利用率的Brian Ehlert youtubevideo ,并阅读了他的Hyper-v Concepts vCPU Tecknet wiki条目 。 基于我对Brian的理解,由于运行应用程序池的w3wp.exe进程正在启动并拆除工作线程以处理单个用户与我们网站的连接,因此这些离散连接应提供vCPU可以当虚拟机只有4个vCPU时,从一个物理处理器快速移动到下一个物理处理器,以使我能够利用物理系统的所有8个内核的性能。
这仍然不合我心,违背了我所看到的。 由于单个vCPU在切换到另一个物理CPU之前必须完成当前处理,这意味着单个vCPU无法实现比一个核心的100%更高的物理CPU净利用率。 如果应用程序线程没有断点,那么这将是100%的一个物理核心,如果应用程序线程确实有断点,允许虚拟机pipe理程序将vCPU移动到下一个物理核心,则利用率可能类似于25四核系统中每个物理内核的百分比,所得到的总数仍然被限制在单个内核的100%。
基于这个推理,当物理内核的vCPU利用率在所有内核中相加时,似乎1个vCPU将永远无法利用比单个内核的100%更多的全部物理内核的总数。
最终,这意味着即使虚拟机具有4个vCPU并且在具有16,32或甚至64个物理核心的系统上运行,我也无法从虚拟机内部实现8核心系统的性能水平。
有一种方法可以实现我在单个虚拟机中查找的性能吗?
基于我对Brian的理解,由于运行应用程序池的w3wp.exe进程正在启动并拆除工作线程以处理单个用户与我们网站的连接,因此这些离散连接应提供vCPU可以当虚拟机只有4个vCPU时,从一个物理处理器快速移动到下一个物理处理器,以使我能够利用物理系统的所有8个内核的性能。
回到阅读关于如何处理工作的一些基本知识。 点。 有没有办法(!)欺骗4个虚拟核心用尽了8个物理核心到100%。 在虚拟机之外没有可见的“突破点”。
基本上,每个虚拟机只有4个虚拟内核。 现在,您可以群集/ NLB并使用多个虚拟机。
实际上,最新一代CPU的处理能力可以降低1到3个百分点(假设一些奇怪的东西没有起作用),如果你分配了4个vCPU,你的虚拟机将会响应,就像它有4个物理核心(HTT内核仅计算附加到ALU的应用程序)。
在附注中; 那Technet Wiki条目是非常混乱的,我认为那里有很多错误的信息。