Hyper-V处理器限制


14

我们最近购买了运行Hyper-V 2008 R2裸机的服务器。该服务器有两个具有超线程功能的四核Intel Xeon处理器,因此,如果我理解正确,它将为我们提供16个内核。在Hyper-V中,我们创建了一个带有4个虚拟处理器的运行Windows Server 2008 R2的虚拟机。处理器设置屏幕告诉我这占系统总处理能力的25%。这是否意味着虚拟OS无法利用剩余的75%?我们将运行其他一些虚拟机,但这是用于SQL Server的虚拟机,我们希望尽可能多地利用它。


5
您要在为计算机分配vCPU时格外小心。这意味着虚拟机必须等待直到同时有四个物理处理器可用然后才能执行。看到这里
Holocryptic

6
就超线程而言,请看一下这个出色的入门文章:arstechnica.com/old/content/2002/10/hyperthreading.ars
Hyppy 2011年

4
完整地说,您的说法对较旧的VMWare系统是正确的,但对于Hyper-V则从未如此。Hyper-V不会“调度”虚拟处理器。
杰克·奥辛斯

Answers:


15

vCPU只能映射到单个物理CPU。您不能使用4个物理CPU来使单个vCPU快4倍;这不是它的工作原理。

Hyper-V仅限于为VM分配4个vCPU(我上次检查)。如果您需要大量的CPU能力,请进行物理处理,那么首先将虚拟化开销添加到CPU密集型和并行化的事物中没有意义的。

另外,如Holocryptic所述,如果您将4个vCPU分配给一个VM,则该虚拟机将无法运行,直到Hyper-V获得4个物理CPU内核来运行它们。根据您的配置,这可能是一个主要的障碍(例如,如果你有一个6芯机和一帮4层虚拟CPU的虚拟机,只有一个会在一个时间不断运行,另外两个核心将总是基本上未使用)。根据Jake Oshins的说法,对于任何版本的Hyper-V来说都是不正确的。他指出,Hyper-V不对CPU使用组调度。几乎与其他所有虚拟机管理程序一样。因此,如果一个物理CPU内核可用,则Hyper-V可以使用它来运行多CPU VM。(还提到,由于NUMA分区,Hyper-V可能不会使用当时所有可用的物理核心)

旁注:SQL不一定会首先使用您可以使用的所有内核。它实际上取决于您使用它的目的以及负载的可并行性。


我同意,但是虚拟CPU的开销几乎没有,而且很少起作用。
Nate

4
克里斯,Holocryptic的注释根本是错误的。Hyper-V不会等到有4个虚拟CPU可用后再从4 VP VM调度虚拟处理器。Hyper-V会在有物理处理器可自由运行时调度虚拟处理器,但有一些警告。例如,它将在与其他VM相同的物理NUMA节点中查找物理处理器。
杰克·奥辛斯

3

是的,克里斯怎么说。如果在Hyper-V虚拟机中需要4个以上的CPU,则可以在虚拟环境中创建两个SQL Server,然后分布数据库或进行物理操作。根据您的SQL Server许可证,您可能可以在虚拟中(在同一物理主机上)添加更多SQL服务器,而不会产生更多的许可费用,但是请阅读SQL虚拟许可白皮书以获取更多信息。

我也同意,如果您的SQL用4个虚拟CPU耗尽了CPU的能力,那么您要么严重利用了应用程序,要么编写了错误的SQL命令。


1
回复:“ ...或者SQL命令写得不好。” 只要供应商提供的代码在起作用,这几乎可以保证。
天鹰

确实,大多数数据库流量都是来自我们ERP系统的OLTP东西。我们也有来自同一供应商的工作流系统。内部编写的自定义内容所占比例很小。
斯科特

我们的旧数据库在4个逻辑内核(两个双核CPU)上已满负荷运行,因此我们期望需要的更多。
斯科特

0

大约4个CPU核心限制:

在VM的配置文件部分中:

[处理器] [计数类型=“整数”] 16 [/计数]

现在您拥有16核CPU。

更新:似乎需要截图

在此处输入图片说明


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.