Virtualization

Microsoft Hyper-V 伺服器 CPU 調度和 NUMA 記憶體架構

  • February 10, 2011

我想這個問題可能適用於任何虛擬化技術,但我試圖了解一些特定於 Microsoft Hyper-V Server 的細節以及如何跨物理 CPU 資源調度虛擬 CPU 資源。

Hyper-V 伺服器似乎使用時間片在所有可用物理 CPU 資源上以循環方式調度來自每個 VM 的虛擬 CPU。預設情況下,所有 VM 的調度都是平等的,但是可以調整 VM 的 CPU 優先級和門檻值以有效地更改它們的調度頻率。

這裡有一些缺失的細節,我似乎無法在網上任何地方找到。這更多是出於個人好奇心,但它可能會影響我將來如何在物理主機之間平衡虛擬機。

(1) 與空閒 VM 相比,VM 上的 CPU 負載是否會改變其有效優先級?假設我有兩個虛擬機,每個虛擬機都有一個虛擬 CPU,競爭一個物理核心。如果 VM 1 的 CPU 負載很高,而 VM 2 處於空閒狀態,那麼在給定時間段內單個資源可用的 N 個切片中,兩個 VM 是否都接收到 ~N/2 個切片?似乎 VM 1 接收更接近 N 個切片會更好。

(2) Hyper-V 是否自動維護任何類型的物理 CPU 關聯?假設我有一個 VM、兩個物理處理器和非統一記憶體訪問(每個物理處理器都有自己的本地記憶體,訪問速度更快)。Hyper-V 是否跨兩個物理處理器調度 VM 的虛擬 CPU?如果虛擬機分配的記憶體完全適合一個記憶體位置,那麼在該物理 CPU 上而不是跨兩個 CPU 調度虛擬機將是最佳選擇。

(1) Hyper-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