Microsoft Hyper-V服务器CPU调度和NUMA内存架构

我想这个问题可能适用于任何虚拟化技术,但我想了解一些特定于Microsoft Hyper-V Server的细节,以及如何在物理CPU资源上安排虚拟CPU资源。

看来,Hyper-V服务器使用时间分片在所有可用的物理CPU资源上以循环方式调度每个虚拟机的虚拟CPU。 默认情况下,所有虚拟机的调度是平等的,但是可以调整虚拟机的CPU优先级和阈值以有效地改变它们被安排的频率。

这里有一些遗漏的细节,我似乎无法在网上find任何地方。 这仅仅是为了个人的好奇心,但是这可能会影响我在将来如何在物理主机之间平衡虚拟机。

(1)与虚拟机相比,虚拟机上的CPU负载是否会改变其有效优先级? 假设我有两个虚拟机,每个虚拟机都有一个虚拟CPU,争夺一个物理核心。 如果虚拟机1的CPU负载较高,虚拟机2处于空闲状态,则单个资源在给定时间内可用的N个分片中,两个虚拟机是否会收到〜N / 2个分片? 看起来好像VM 1接近N个切片。

(2)Hyper-V是否自动维护任何types的物理CPU亲和力? 假设我有一个虚拟机,两个物理处理器和非统一的内存访问(每个物理处理器有自己的本地内存,访问速度更快)。 Hyper-V是否在两个物理处理器上安排虚拟机的虚拟CPU? 看起来,如果虚拟机的分配内存完全适合一个内存位置,那么将虚拟机安排在该物理CPU上而不是在两个CPU上进行安排是最佳的。

(1)由于Hyper-V的权重是相同的,因此会给虚拟处理器的每个虚拟处理器提供相同的运行机会。 但是,当虚拟机2的虚拟机空闲时,虚拟机1会将虚拟机的空闲时间分配给虚拟机。实际上,虚拟机1会占用大部分的CPU资源。

(2)是的,Hyper-V维护与每个虚拟处理器相关的“理想物理处理器”。 副总裁将倾向于安排在理想的物理处理器上。 此外,虚拟机虚拟处理器的理想物理处理器将尽可能与分配给虚拟机的内存在同一物理NUMA节点中。 对于具有多个虚拟处理器的虚拟机,虚拟处理器将倾向于具有单独的理想物理处理器,但在相同的物理NUMA节点中。

请注意,大于物理NUMA节点的VM将跨越多个节点,从而导致非确定性调度和性能。