Share via


軟體定義網路中的 HNV 閘道效能微調

除了 Windows Server 閘道虛擬機器 (VM) 的設定參數之外,本主題提供執行 Hyper-V 和託管 Windows Server 閘道虛擬機器之伺服器的硬體規格和設定建議。 為了從 Windows Server 閘道 VM 擷取最佳效能,預期會遵循這些指導方針。 以下幾節涵蓋部署 Windows Server 閘道時的硬體和設定需求。

  1. Hyper-V 硬體建議
  2. Hyper-V 主機設定
  3. Windows Server 閘道 VM 設定

Hyper-V 硬體建議

以下是對每部執行 Windows Server 2016 和 Hyper-V 之伺服器建議的最低硬體設定。

伺服器元件 規格
中央處理器 (CPU) 非統一記憶體架構 (NUMA) 節點:2
如果主機上有多個 Windows Server 閘道 VM,為了獲得最佳效能,每個閘道 VM 都應具有對一個 NUMA 節點的完整存取權。 它應該與主機實體介面卡所使用的 NUMA 節點不同。
每個 NUMA 節點的核心 2
超執行緒 Disabled. 超執行緒無法改善 Windows Server 閘道的效能。
隨機存取記憶體 (RAM) 48 GB
網路介面卡 (NIC) 兩個 10 GB NIC,閘道效能將取決於線路速率。 如果線路速率小於 10 Gbps,則閘道通道輸送量數字也會以相同的比例減少。

確保指派給 Windows Server 閘道 VM 的虛擬處理器數目不超過 NUMA 節點上的處理器數目。 例如,如果一個 NUMA 節點有 8 個核心,則虛擬處理器數目應小於或等於 8。 為了獲得最佳效能,它應該是 8。 若要查明 NUMA 節點的數目以及每個 NUMA 節點的核心數目,請在每部 Hyper-V 主機執行下列 Windows PowerShell 指令碼:

$nodes = [object[]] $(gwmi –Namespace root\virtualization\v2 -Class MSVM_NumaNode)
$cores = ($nodes | Measure-Object NumberOfProcessorCores -sum).Sum
$lps = ($nodes | Measure-Object NumberOfLogicalProcessors -sum).Sum


Write-Host "Number of NUMA Nodes: ", $nodes.count
Write-Host ("Total Number of Cores: ", $cores)
Write-Host ("Total Number of Logical Processors: ", $lps)

重要

在 NUMA 節點間配置虛擬處理器對 Windows Server 閘道效能可能有負面的影響。 執行多個 VM,每個 VM 都有來自一個 NUMA 節點的虛擬處理器,很可能會比所有虛擬處理器指派單一 VM 提供更好的彙總效能。

當每個 NUMA 節點具有八個核心時,選擇要在每個 Hyper-V 主機上安裝的閘道 VM 數量時,建議使用一個具有八個虛擬處理器和至少 8 GB RAM 的閘道 VM。 在此情況下,一個 NUMA 節點專用於主機電腦。

Hyper-V 主機設定

以下是對每部執行 Windows Server 2016 和 Hyper-V 之伺服器建議的設定,這些伺服器的工作負載是執行 Windows Server 閘道 VM。 這些設定指示包含使用 Windows PowerShell 命令的範例。 這些範例含有在您的環境中執行命令時必須提供的實際值預留位置。 例如,網路介面卡名稱預留位置為 "NIC1" 和 "NIC2"。當您執行使用這些預留位置的命令時,請利用伺服器網路介面卡的實際名稱而不是使用此預留位置,否則此命令將會失敗。

注意

若要執行下列 Windows PowerShell 命令,您必須是 Administrators 群組的成員。

設定項目 Windows PowerShell 設定
交換器內嵌小組 當您使用多個網路介面卡建立 vswitch 時,會自動啟用這些介面卡的交換器內嵌小組。
New-VMSwitch -Name TeamedvSwitch -NetAdapterName "NIC 1","NIC 2"
Windows Server 2016 中的 SDN 不支援透過 LBFO 進行的傳統小組。 交換器內嵌小組可讓您針對虛擬流量和 RDMA 流量使用相同的 NIC 集。 這在依據 LBFO 的 NIC 小組中不受支援。
實體 NIC 的插斷仲裁 使用預設設定。 若要檢查設定,您可使用下列 Windows PowerShell 命令:Get-NetAdapterAdvancedProperty
實體 NIC 的接收緩衝區大小 您可以執行 Get-NetAdapterAdvancedProperty 命令,驗證實體 NIC 是否支援此參數設定。 如果 NIC 不支援此參數,則命令的輸出就不會包含 "Receive Buffers" 屬性。如果 NIC 支援此參數,您可以使用下列 Windows PowerShell 命令設定接收緩衝區大小:
Set-NetAdapterAdvancedProperty "NIC1" –DisplayName "Receive Buffers" –DisplayValue 3000
實體 NIC 的傳送緩衝區大小 您可以執行 Get-NetAdapterAdvancedProperty 命令,驗證實體 NIC 是否支援此參數設定。 如果 NIC 不支援此參數,則命令的輸出就不會包含 "Send Buffers" 屬性。如果 NIC 支援此參數,您可以使用下列 Windows PowerShell 命令設定傳送緩衝區大小:
Set-NetAdapterAdvancedProperty "NIC1" –DisplayName "Transmit Buffers" –DisplayValue 3000
實體 NIC 的接收端調整 (RSS) 您可以執行 Windows PowerShell 命令 Get-NetAdapterRss,驗證實體 NIC 是否啟用 RSS。 您可以使用下列 Windows PowerShell 命令,在您的網路介面卡上啟用和設定 RSS:
Enable-NetAdapterRss "NIC1","NIC2"
Set-NetAdapterRss "NIC1","NIC2" –NumberOfReceiveQueues 16 -MaxProcessors
注意:如果已啟用 VMMQ 或 VMQ,則不需在實體網路介面卡上啟用 RSS。 您可以在主機虛擬網路介面卡上加以啟用
VMMQ 若要啟用 VM 的 VMMQ,請執行下列命令:
Set-VmNetworkAdapter -VMName <gateway vm name>,-VrssEnabled $true -VmmqEnabled $true
注意:並非所有網路介面卡都支援 VMMQ。 目前支援 Chelsio T5 和 T6、Mellanox CX-3 和 CX-4,以及 QLogic 45xxx 系列
NIC 小組的虛擬機器佇列 (VMQ) 您可以使用下列 Windows PowerShell 命令,在 SET 小組上啟用 VMQ:
Enable-NetAdapterVmq
注意:只有在 HW 不支援 VMMQ 時,才應該啟用此功能。 如果支援,則應該啟用 VMMQ 以提升效能。

注意

只有在虛擬機器上的負載較高且 CPU 使用率達到上限時,VMQ 和 vRSS 才會發揮作用。 只有在這種情況下,至少會有一個處理器核心達到最大運算能力。VMQ 和 vRSS 將有利於協助將處理負載分散到多個核心上。 這不適用於 IPsec 流量,因為 IPsec 流量僅限於單一核心。

Windows Server 閘道 VM 設定

您可以在兩個 Hyper-V 主機上設定多個 VM,這些 VM 設定為 Windows Server 閘道。 您可以使用虛擬交換器管理員建立繫結至 Hyper-V 主機上 NIC 小組的 Hyper-V 虛擬交換器。 請注意,為了達到最佳效能,您應該在 Hyper-V 主機上部署單一閘道 VM。 以下是對每個 Windows Server 閘道 VM 建議的設定。

設定項目 Windows PowerShell 設定
記憶體 8 GB
虛擬網路介面卡數目 具有下列特定用途的 3 個 NIC:1 個是管理,用於管理作業系統所使用,1 個是外部,提供外部網路的存取,1 個是內部,僅提供內部網路的存取。
接收端調整 (RSS) 您可以為管理 NIC 保留預設的 RSS 設定。 下列範例設定是針對具有 8 個虛擬處理器的 VM。 對於外部和內部 NIC,您可以使用下列 Windows PowerShell 命令,將 BaseProcNumber 設定為 0 並將 MaxRssProcessors 設定為 8 以啟用 RSS:
Set-NetAdapterRss "Internal","External" –BaseProcNumber 0 –MaxProcessorNumber 8
傳送端緩衝區 您可為管理 NIC 保留預設的傳送端緩衝區設定。 對於內部和外部 NIC,您可以使用下列 Windows PowerShell 命令,設定傳送端緩衝區使用 32 MB 的 RAM:
Set-NetAdapterAdvancedProperty "Internal","External" –DisplayName "Send Buffer Size" –DisplayValue "32MB"
接收端緩衝區 您可為管理 NIC 保留預設的接收端緩衝區設定。 對於內部和外部 NIC,您可以使用下列 Windows PowerShell 命令,設定接收端緩衝區使用 16 MB 的 RAM:
Set-NetAdapterAdvancedProperty "Internal","External" –DisplayName "Receive Buffer Size" –DisplayValue "16MB"
轉送最佳化 您可為管理 NIC 保留預設的轉送最佳化設定。 對於內部和外部 NIC,您可以使用下列 Windows PowerShell 命令啟用轉送最佳化:
Set-NetAdapterAdvancedProperty "Internal","External" –DisplayName "Forward Optimization" –DisplayValue "1"