Hyper-V 虛擬交換器系結至 LBFO 小組時的事件標識碼 106

本文有助於解決 Hyper-V 虛擬交換器系結至 LBFO 小組時的事件標識碼 106。

適用:Windows Server 2012 R2
原始 KB 編號: 2974384

徵狀

請試想下列案例:

  • 您有以 Windows Server 2012 或 Windows Server 2012 R2 為基礎的計算機,該計算機會與一或多個負載平衡和故障轉移 (LBFO) 小組一起設定。
  • Hyper-V 虛擬交換器會系結至其中一個 LBFO 小組。

在此案例中,會間歇性地記錄下列其中一個事件。

原因

如果錯誤 106 指出「原因:當 LBFO 設定為總和佇列模式時,處理器會設定重疊」,您必須使用 Set-NetAdapterVmq Windows PowerShell 命令,將小組中的每個網路適配器設定為使用不同的處理器。 (因為已針對佇列總和設定 LBFO 小組,所以小組中的網路適配器必須使用非重疊處理器集合。)

如果錯誤 106 指出「原因:當 LBFO 設定為最小佇列模式時,處理器集合不相同」,您必須使用 Set-NetAdapterVmq Windows PowerShell 命令,將小組中的每個網路適配器設定為使用相同的處理器。 (因為 LBFO 小組設定為最小佇列模式,所以小組中的網路適配器必須使用重疊的處理器集合。)

解決方案

如果錯誤 106 指出「原因:當 LBFO 設定為總和佇列模式時,處理器會設定重疊」,您可以使用下列範例 Windows PowerShell 命令來分隔處理器,讓每個網路適配器針對虛擬機佇列 (VMQ) 使用不同的處理器。 此外,您也需要在 KB 文章中 安裝 Hotfix 3031598,以解決進行這些組態變更之後的其他已知問題。

這些是範例命令。 您可以根據伺服器有多少個處理器,以及您不想用於 VMQ 的處理器,來變更 BaseProcessorNumber 和 MaxProcessors 設定。

Set-NetAdapterVmq -Name NIC1 -BaseProcessorNumber 2 -MaxProcessors 2

注意事項

此網路適配器會針對 VMQ 使用處理器 2 和 3。

Set-NetAdapterVmq -Name NIC2 -BaseProcessorNumber 4 -MaxProcessors 2

注意事項

此網路適配器會針對 VMQ 使用處理器 4 和 5。

如果伺服器已啟用處理器 Hyper Threading,您必須修改如何設定 BaseProcessorNumber 和 MaxProcessors 設定,以修正總和佇列模式中的錯誤 106。

如果您不確定是否已在伺服器上啟用 Hyper Threading,有一個簡單的方法可判斷其執行 Get-NetAdapterRSS Windows PowerShell Cmdlet,然後查看 RssProcessorArray 的輸出行。 如果 0:0/0 0:1/0 0:2/0.....,則超線程為 OFF。 如果顯示為 0:0/0 0:2/0 0:4/0...,則 Hyper Threading 為 ON。 當 Hyper Threading 為 ON 時,RSS 和 VMQ 只會使用核心處理器,因此這表示偶數處理器。

因此,如果您要在 Hyper-Threaded 伺服器上設定先前提及的命令,則只能將BaseProcessorNumber設定為偶數。 此外,MaxProcessors 必須設定為 VMQ 可以使用的處理器數目。

例如,如果您已 (兩個) 六個核心處理器,且已啟用 Hyper Threading,您會在 Windows 工具中看到 24 個處理器顯示處理器,例如任務管理器。 VMQ 只能使用其中 12 個,因為它只使用偶數處理器。 若要將這些處理器分割成兩個 NIC 並修正錯誤 106,您可以使用下列命令,將每個 NIC 設定為針對 VMQ 使用不同的處理器:
Set-NetAdapterVMQ -Name NIC1 -BaseProcessorNumber 0 -MaxProcessors 6 (,因此此 NIC 會針對 VMQ) 使用處理器 0,2,4,6,8,10
Set-NetAdapterVMQ -Name NIC2 -BaseProcessorNumber 12 -MaxProcessors 6 (因此此 NIC 會針對 VMQ) 使用處理器 12,14,16,18,20,22

如果錯誤 106 指出「原因:使用最小佇列模式設定 LBFO 時,處理器集合不相同」,您可以使用下列範例 Windows PowerShell 命令,讓每個網路適配器針對 VMQ 使用相同的處理器。

這些是範例命令。 您可以根據伺服器有多少個處理器,以及您不想用於 VMQ 的處理器,來變更 BaseProcessorNumber 和 MaxProcessors 設定。

Set-NetAdapterVmq -Name NIC1 -BaseProcessorNumber 2 -MaxProcessors 4

注意事項

此網路適配器會針對 VMQ 使用處理器 2、3、4 和 5

Set-NetAdapterVmq -Name NIC2 -BaseProcessorNumber 2 -MaxProcessors 4

注意事項

此網路適配器也會針對 VMQ 使用處理器 2、3、4 和 5

在正確設定 VMQ 處理器,讓所有網路適配器都使用相同的 VMQ 處理器之後,如果您也調整了任何網路適配器的「慣用 NUMA 節點」設定以使用特定 NUMA 節點,您仍可能會收到錯誤 106「原因:使用最小佇列模式設定 LBFO 時處理器集合不相同」。 其預設設定為「系統預設值」,是使用 VMQ 時的慣用設定。 如果您設定特定的慣用NUMA節點,而且網路適配器上的NUMA節點不同,則網路適配器不會針對 VMQ 使用相同的處理器。

範例:在上述範例中,您會將 NIC1 和 NIC2 設定為同時使用處理器 2、3、4 和 5。 如果您的伺服器在每個 NUMA 節點中有八個 NUMA 節點具有四個處理器,而且您將 NIC1 設定為慣用 NUMA 節點 0,並將 NIC2 設定為慣用 NUMA 節點 1,則您實際上是將 NIC1 設定為使用處理器 2 和 3,而 NIC2 使用處理器 4 和 5,因為處理器 2、3、 4 和 5 會分割成兩個 NUMA 節點,代表處理器 0、1、2、3 和 4、5、6、7。

其他相關資訊

討論不同 LBFO 組態之 VMQ 和 LBFO 設定的部落格
討論 VMQ CPU 指派的部落格