我想这个问题可以适用于任何虚拟化技术,但我想了解一些特定于Microsoft的细节,以及虚拟CPU资源是如何跨物理CPU资源调度的。
看来,Hyper服务器在所有可用的物理CPU资源中使用时间切片,以循环的方式调度来自每个VM的虚拟CPU。默认情况下,所有VM都被同等地调度,但是VM的CPU优先级和阈值可以被调整以有效地更改它们的调度频率。
这里有一些缺失的细节,我似乎在网上找不到。这更多的是出于个人的好奇心,但它可能会影响我如何在未来的物理主机之间平衡VM。
(1)与空闲VM相比,VM上的CPU负载是否改变了其有效优先级?假设我有两个VM,每个VM都有一个虚拟CPU,争夺一个物理内核。如果VM 1具有较高的CPU负载,而VM 2处于空闲状态,那么在给定时间内单个资源可用的N个片中,两个VM是否都接收~N/2片?似乎更好的做法是,VM 1收到更接近N片。
(2) Hyper-V是否自动保持任何物理CPU亲和力?假设我有一个VM、两个物理处理器和非统一的内存访问(其中每个物理处理器都有自己的本地内存,访问速度更快)。Hyper-V是否计划VM的虚拟CPU(s)跨越两个物理处理器?如果VM的分配内存完全适合于一个内存位置,那么最好将VM安排在物理CPU上,而不是跨两个CPU。
发布于 2011-02-10 00:32:27
(1)超级V将给你的每一个假设虚拟处理器一个相同的运行机会,因为它们的重量是相同的。然而,当VM 2的VP以空闲的方式完成其时间时,该空闲时间将从VM 1分配给VP。因此,在实践中,VM 1将使用大部分CPU容量。
(2)是的,Hyper-V维护着与每个虚拟处理器相关联的“理想物理处理器”。VP通常会被安排在其理想的物理处理器上。此外,如果可能的话,VM虚拟处理器的理想物理处理器将与分配给VM的内存位于同一个物理NUMA节点中。对于具有多个虚拟处理器的VM,VP往往有独立的理想物理处理器,但在同一个物理NUMA节点中。
请注意,大于物理NUMA节点的VM将跨越多个节点,从而导致不确定的调度和性能。
https://serverfault.com/questions/233407
复制相似问题