Answers:
这曾经是正确的,但不再完全是正确的。
他们指的是严格的协同调度。
最重要的是,在严格的协同调度算法中,滞后的vCPU的存在会导致整个虚拟机协同停止。在宽松的协同调度算法中,领先的vCPU根据对最慢的同级vCPU的偏斜来决定是否应自行停止
现在,如果主机只有4个线程,那么分配所有线程将很愚蠢。如果它有两个处理器,每个处理器有4个线程,那么您可能不希望分配单个处理器的所有内容,因为虚拟机管理程序应尝试将vCPU保持在同一NUMA节点上,以加快内存访问速度,并且通过将整个套接字分配给单个VM,使这项工作变得更加困难(请参见上述PDF的第12页)。
因此,在某些情况下,更少的vCPU 可以比更多的性能好,但这并不是100%的时间。
综上所述,我很少为每个来宾分配超过3个vCPU。默认情况下,每个人都得到2个,如果工作量很大,则每个人得到3个,而对于SQL Server或真正繁重的批处理VM或具有很多用户的终端服务器,则得到4个。
MAXDOP
设置,SQL Server可以非常高效地使用所有4个内核。但是,根据工作负载,负担过重的SQL Server通常是数据库设计不佳的标志-索引错误,没有聚集索引,索引太多,没有优化等(不总是,但经常)。
这在很大程度上取决于底层的虚拟机管理程序和运行它的管理员,让我解释一下:
您可以从中学到什么?始终以最少的资源创建VM,并根据需要增加VM。始终横向扩展而不是向上扩展,您将可以在任何地方运行您的应用程序。
由于虚拟机管理程序可能会遇到锁定,因此确实可以理解,2个CPU的速度可能比4个CPU的速度快。