天天看點

Hyper-v Server NUMA

在新的Windows 2012 R2 Hyper-V 4.0 中,Hyper-V可以在虛拟機級别提供對NUMA架構的支援,NUMA架構在中大型系統上一直非常盛行,也是高性能的解決方案,在系統延遲方面表現都很優秀。NUMA 系統通常是多處理器系統,其中的記憶體延遲随通路它的處理器不同而有所不同。記憶體被分成多個節點,CPU 和節點之間的延遲可能各不相同,并且每個 CPU 都被視為它可最快通路的那個節點的一部分。如果大家對NUMA不太認識,可以先對NUMA 結構認識認識。

通過使用 NUMA,處理器可以比通路遠端記憶體(屬于系統中其他處理器的記憶體)更快的速度通路來本地記憶體(直接連接配接到該處理器的記憶體)。現代化的作業系統與 SQL Server 等高性能應用程式在開發過程中就針對系統的 NUMA 拓撲進行了優化,會線上程排程或記憶體配置設定時考慮到 NUMA 的存在,借此改善性能。

通過将虛拟 NUMA 拓撲投射到Hyper-v虛拟機内部,能在大規模虛拟機環境中實作更優化的性能與負載擴充性。這樣做可以讓來賓作業系統與 SQL Server 等應用程式,或 IIS 充分利用 NUMA 優化性能。投射給 Hyper-V 虛拟機的預設虛拟 NUMA 拓撲通過優化可與主控端的 NUMA 拓撲保持一緻,如下圖所示為客戶機NUMA 拓撲預設與主機的 NUMA 拓撲比對。

<a href="http://s3.51cto.com/wyfs02/M02/77/C2/wKioL1ZuG_3AaAx8AACaj1OgM-s676.jpg" target="_blank"></a>

來賓 NUMA 確定可感覺 NUMA 的重要負載能獲得最佳性能,并充分利用底層硬體的性能與硬體本身的能力,通過硬體、軟體,及應用程式領域的投資獲得最大化收益。運作 SQL 與 IIS 的客戶将通過來賓 NUMA 獲得大量收益

Microsoft SQL Server 2012 與 Windows Server 2012 中的 Internet Information Services(IIS) (IIS) 8 等高性能應用程式可感覺 NUMA,相比在不支援 NUMA 的平台和虛拟機中運作的虛拟化執行個體,可極大改善性能。對來賓 NUMA 的支援還可用于使用 Windows Server 2012 故障轉移群集搭建的高可用解決方案。故障轉移群集會在移動虛拟機前評估節點 NUMA 配置,確定目标節點能良好支援虛拟機中運作的負載。

如果将虛拟機配置為使用動态記憶體,則隻有一個虛拟NUMA節點(即扁平 NUMA 拓撲)投射進來賓系統,實際上就禁用了虛拟NUMA支援。

使用如下指令檢視主控端系統是否基于NUMA:

Get-VMHostNumaNode:

<a href="http://s3.51cto.com/wyfs02/M01/77/C2/wKioL1ZuG__iB9LlAABVNNim5Uo365.jpg" target="_blank"></a>

打開Hyper-v管理器,點選右側“Hyper-v設定”:

<a href="http://s3.51cto.com/wyfs02/M02/77/C2/wKioL1ZuHACyMv6vAABw2tASsGU722.jpg" target="_blank"></a>

Hyper-V設定頁面選擇NUMA跨越,勾選“允許虛拟機節點”:

<a href="http://s3.51cto.com/wyfs02/M00/77/C2/wKioL1ZuHALC_CctAACdhFsqhpI027.jpg" target="_blank"></a>

使用 PowerShell設定允許實體機跨越NUMA節點指令如下:

Set-VMHost -NumaSpanningEnabled $true

<a href="http://s3.51cto.com/wyfs02/M00/77/C2/wKioL1ZuHATiwkrJAAAglxyWa1c400.jpg" target="_blank"></a>

當在Hyper-V主控端中設定啟用NUMA以後,會影響運作在Hyper-V主控端上的所有虛拟機。當主控端上的記憶體不足以在虛拟 NUMA節點和主機的實體 NUMA節點之間執行最佳映射時,NUMA 跨越設定可确定虛拟機行為。此設定會影響以下虛拟機操作:啟動、還原與遷移。

在 NUMA 跨越處于啟用狀态,并由于記憶體限制必須在兩個或多個實體 NUMA 節點之間拆分一個或多個虛拟 NUMA 節點時,仍然可以啟動虛拟機或将VM還原或遷移到其他主控端。但是,此拆分将導緻在虛拟NUMA和實體 NUMA 節點之間執行非最佳映射。NUMA 感覺工作負載甚至也可能以非最佳方式執行;例如,虛拟機内顯示為本地的記憶體通路實際上在主機的實體 NUMA 拓撲上可能變為遠端。此外,因為将虛拟 NUMA 節點映射到實體 NUMA 節點可能會根據啟動虛拟機時的記憶體可用性而有所不同,是以每次重新啟動虛拟機後的性能可能不一緻。

在以下情況中,可能會執行虛拟 NUMA 到實體 NUMA 的拆分:

1、配置虛拟機時使用的虛拟 NUMA 節點大于主機的實體 NUMA 節點。這可能是由手動配置虛拟機的 NUMA 設定導緻的,或者是因為虛拟機最初在運作 Hyper-V 的伺服器上建立,然後移動到具有不同實體 NUMA 拓撲的伺服器。

2、 目前在實體 NUMA 節點上配置設定可用記憶體需要至少一個虛拟 NUMA 節點受到多個實體 NUMA 節點上的記憶體支援。可用記憶體配置設定不均可能由其他虛拟機的記憶體使用情況或主計算機系統導緻。

當 NUMA 跨越處于禁用狀态時,如果強制虛拟機在兩個或多個實體 NUMA 節點之間拆分虛拟 NUMA 節點,則 Hyper-V 将不會啟動、還原或接受虛拟機的實時遷移。這可確定始終以最佳性能運作虛拟機。每個虛拟 NUMA 節點都由一個實體 NUMA 節點支援,并且虛拟 NUMA 拓撲與實體伺服器的 NUMA 拓撲完全一緻。建議始終需要最佳性能的 NUMA 感覺工作負載使用此設定,但它可能導緻虛拟機無法啟動、還原或遷移。

啟用或禁用 NUMA 跨越的優點和缺點

1、啟用:

優點:虛拟機可以利用在主機上提供的任何記憶體,而不考慮跨實體 NUMA 節點的配置設定。将啟動虛拟機,而不考慮其虛拟 NUMA 拓撲,即使它與主機的實體 NUMA 拓撲不一緻也是如此。

缺點:虛拟機性能在每次虛拟機重新啟動後可能有所不同。虛拟 NUMA 一緻性在每次啟動後可能有所不同。NUMA 感覺工作負載可能不會以最佳方式執行,因為虛拟 NUMA 拓撲可能與實體 NUMA 拓撲不一緻。

2、禁用:

優點:NUMA 感覺工作負載能夠以最佳方式執行,因為虛拟 NUMA 拓撲與實體 NUMA 拓撲一緻。虛拟機性能在每次重新啟動後保持一緻。

缺點:如果虛拟機的虛拟 NUMA 拓撲未配置為與目标主機的實體 NUMA 拓撲一緻,則可能無法将虛拟機遷移到給定主機。啟用了動态記憶體的虛拟機使用的處理器或記憶體不能多于單個實體 NUMA 節點中提供的數量。

虛拟NUMA

如果需要支援虛拟化較大的擴充工作負載,Windows Server 2012 R2中的 Hyper-V 将提供可擴充的虛拟機擴充限制。最多可以向單個虛拟機配置設定 64 個虛拟CPU和 1 TB 的RAM。在建立更大的虛拟機時,可能會使用主控端系統上的多個 NUMA 節點中的RAM。在此類虛拟機配置中,如果虛拟處理器和記憶體繼續從單個 NUMA 節點中進行配置設定,則工作負載将不會利用 NUMA 優化功能,并且性能将會降低。

在 Windows Server 2012 R2中,Hyper-V 将向虛拟機提供虛拟 NUMA 拓撲。在預設情況下,将優化此虛拟 NUMA 拓撲以比對基礎主計算機的 NUMA 拓撲。通過在虛拟機中公開虛拟 NUMA 拓撲,可允許來賓作業系統以及在其中運作的任何 NUMA 感覺應用程式利用 NUMA 性能優化,就像在實體計算機上運作時的行為一樣。

從工作負載的角度來看,虛拟和實體 NUMA 之間沒有差別。在虛拟機中,當工作負載為資料配置設定本地記憶體并在同一個 NUMA 節點中通路該資料時,将在基礎實體系統上快速通路本地記憶體結果。可成功避免由于遠端記憶體通路而引起的性能損失。

在虛拟機中配置NUMA的方式如下:

右鍵虛拟機,選擇設定,展開處理器,,點選NUMA:

<a href="http://s3.51cto.com/wyfs02/M01/77/C2/wKioL1ZuHAby2XQLAAD5J0q7UFg245.jpg" target="_blank"></a>

在此我們可以使用硬體的NUMA拓撲,也可以自定義NUMA拓撲(在此不做介紹)。

有關Hyper-v Server NUMA拓撲有關的知識今天就給大家介紹這麼多!有興趣的朋友可以去微軟的Technet上檢視相關資料!

本文轉自wuyvzhang 51CTO部落格,原文連結:http://blog.51cto.com/wuyvzhang/1722668,如需轉載請自行聯系原作者