stefanmuc
Goto Top

Netzwerkperformance zw. Windows-Host und HyperV-VM langsam - vSwitch falsch?

Hallo,
wie kann ich die Netzwerkperformance zwischen Windows-Host und HyperV-VM beschleunigen?
Performance aller Laufwerke auf dem Host OK.
Performance der VM-Laufwerke innerhalb der VM OK.
Ein auf dem Host eingerichtetes Netzwerklaufwerk, das in der VM liegt: elend langsam. Selbst ein einfaches dir in der Powershell dauert 5-10 sec.

Host: Win11Pro (AMD Ryzen9 7950X3D, 64 GB DDR5, mehrere M.2 NVMe-SSDs PCIe4, Mainboard ASrock B650M mit "Realtek Gaming 2.5GbE Family Controller")
HyperV-VM: Win11Pro (16 vCores, dyn. RAM)
externer vSwitch auf dem "Realtek Gaming 2.5GbE Family Controller", dieser wird vom Host auch als Netzwerkausgang genutzt

RSC auf dem vSwitch des Hosts auszuschalten klappt nicht:
PS C:\> Get-VMSwitch
Name           SwitchType NetAdapterInterfaceDescription
----           ---------- ------------------------------
vSwitch extern External   Realtek Gaming 2.5GbE Family Controller
Default Switch Internal

PS C:\> Get-VMSwitch | Set-VMSwitch -EnableSoftwareRsc $false
Set-VMSwitch : Fehler beim Ändern der Verbindungseinstellungen für den virtuellen Ethernet-Switch.
Der automatische Switch für die gemeinsame Nutzung der Internetverbindung kann nicht geändert werden.
In Zeile:1 Zeichen:16
+ Get-VMSwitch | Set-VMSwitch -EnableSoftwareRsc $false
+                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Set-VMSwitch], VirtualizationException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.SetVMSwitch

Eigenschaften von HyperV Virtual Ethernet Adapter/Erweitert:
Jumbo Packet: Disabled
Eigenschaften von Ethernet (Netzwerkkarte): kein Reiter "Erweitert" vorhanden (nur Netzwerk und Freigabe)

Das oft empfohlene VMQ ausschalten finde ich nirgends.

Wie könnte ich die Netzwerkperformance erhöhen? vSwitch falsch definiert?

Content-ID: 669905

Url: https://administrator.de/forum/netzwerkperformance-zw-windows-host-und-hyperv-vm-langsam-vswitch-falsch-669905.html

Ausgedruckt am: 05.01.2025 um 07:01 Uhr

aqui
aqui 01.12.2024 aktualisiert um 13:44:25 Uhr
Goto Top
Eine Steilvorlage für die die hiesigen "DIE WINDOWS SERVER STORY" Dokumente von @MysticFoxDE zu dem ganzen MS Drama... 😉
MysticFoxDE
MysticFoxDE 01.12.2024 um 18:47:41 Uhr
Goto Top
Moin @aqui,

Eine Steilvorlage für die die hiesigen "DIE WINDOWS SERVER STORY" Dokumente von @MysticFoxDE zu dem ganzen MS Drama... 😉

ähm, @StefanMUC verwendet leider weder die Serverversion noch eine NIC die dafür gedacht ist, sprich, das hier ist weniger ein Drama, sondern geht schon eher Richtung der Apokalypse. 😬

Aber ja, vielleicht bekommen wir die hier auch abgewendet, zumindest was diesen Fall angeht. 🤪

Gruss Alex
MysticFoxDE
MysticFoxDE 01.12.2024 um 19:11:20 Uhr
Goto Top
Moin @StefanMUC,

wie kann ich die Netzwerkperformance zwischen Windows-Host und HyperV-VM beschleunigen?
Performance aller Laufwerke auf dem Host OK.
Performance der VM-Laufwerke innerhalb der VM OK.
Ein auf dem Host eingerichtetes Netzwerklaufwerk, das in der VM liegt: elend langsam. Selbst ein einfaches dir in der Powershell dauert 5-10 sec.

ähm, ja, erstmal willkommen in dem Hypervisor-Netwerkperformance-Irrgarten. 😔

Host: Win11Pro (AMD Ryzen9 7950X3D, 64 GB DDR5, mehrere M.2 NVMe-SSDs PCIe4, Mainboard ASrock B650M mit "Realtek Gaming 2.5GbE Family Controller")

😯 ... eine 2.5G Gaming NIC ... das ist sicherlich der erste Stolperstein, denn die ist fürchte ich nicht wirklich für HV-Betrieb gedacht. 😬

Na ja, schauen wir mal ob die überhaupt die Basics beherrscht.
Kannst du auf dem Hyper-V bitte den folgenden Befehl auf die entsprechende NIC abfeuern ...

PowerShell als Administrator:
Get-NetAdapterHardwareInfo -Name "NIC-Name" | select *  


... und dessen Ausgabe hier posten, danke.

HyperV-VM: Win11Pro (16 vCores, dyn. RAM)

dyn. RAM ... 😱 ... auch nix gut, bitte RAM immer fest vorgeben.

externer vSwitch auf dem "Realtek Gaming 2.5GbE Family Controller", dieser wird vom Host auch als Netzwerkausgang genutzt

Wie schon oben geschrieben, diese NIC ist nicht wirklich für einen Hypervisor gedacht. 😬
Wahrscheinlich müssen wir daher auch zuerst alle Features aus dem entsprechenden vSwitch wieder rausklopfen, die diese NIC nicht kann, die aber im vSwitch seitens MS per Default aktiviert sind. 😔

Das ist aber bei einem Windows 11 nicht wirklich so einfach ...

RSC auf dem vSwitch des Hosts auszuschalten klappt nicht:
PS C:\> Get-VMSwitch
Name           SwitchType NetAdapterInterfaceDescription
----           ---------- ------------------------------
vSwitch extern External   Realtek Gaming 2.5GbE Family Controller
Default Switch Internal

PS C:\> Get-VMSwitch | Set-VMSwitch -EnableSoftwareRsc $false
Set-VMSwitch : Fehler beim Ändern der Verbindungseinstellungen für den virtuellen Ethernet-Switch.
Der automatische Switch für die gemeinsame Nutzung der Internetverbindung kann nicht geändert werden.
In Zeile:1 Zeichen:16
+ Get-VMSwitch | Set-VMSwitch -EnableSoftwareRsc $false
+                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Set-VMSwitch], VirtualizationException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.SetVMSwitch

... weil viele der PowerShell Befehle auf einem Windows 11 Client schlichtweg nicht funktionieren. 😭

Eigenschaften von HyperV Virtual Ethernet Adapter/Erweitert:
Jumbo Packet: Disabled
Eigenschaften von Ethernet (Netzwerkkarte): kein Reiter "Erweitert" vorhanden (nur Netzwerk und Freigabe)

Das oft empfohlene VMQ ausschalten finde ich nirgends.

Das sollte auf den Management vNIC's, eigentlich mit dem folgenden Befehl funktionieren ...

Get-VMNetworkAdapter -ManagementOS | Set-VMNetworkAdapter -VmqWeight 0


... ich fürchte jedoch, dass dieser auf Windows 11 wahrscheinlich auch nicht funktionieren wird.

Wie könnte ich die Netzwerkperformance erhöhen? vSwitch falsch definiert?

Das ist leider alles andere als ein einfaches Kapitel, vor allem bei deinen Rahmenbedingungen. 😬

Na ja, nicht verzweifeln, irgendetwas bekommen wir schon noch gedeichselt. 😉

Gruss Alex
StefanMUC
StefanMUC 01.12.2024 aktualisiert um 20:56:10 Uhr
Goto Top
Allein diese Abfrage dauert auf dem PC über 20 Sekunden:
PS C:\> Get-NetAdapterHardwareInfo -Name "Ethernet" | select *  
SriovSupport                      : NoIoMmuSupport
PcieLinkSpeed                     : 5.0 GT/s
PcieMaxLinkSpeed                  : 5.0 GT/s
Version                           : 1.1+
DeviceType                        : PCI Express endpoint
CurrentSpeedAndMode               : NA
ifAlias                           : Ethernet
InterfaceAlias                    : Ethernet
ifDesc                            : Realtek Gaming 2.5GbE Family Controller
Segment                           : 0
Bus                               : 7
Device                            : 0
Function                          : 0
Slot                              :
PcieLinkWidth                     : 1
Caption                           : MSFT_NetAdapterHardwareInfoSettingData 'Realtek Gaming 2.5GbE Family Controller'  
Description                       : Realtek Gaming 2.5GbE Family Controller
ElementName                       : Realtek Gaming 2.5GbE Family Controller
InstanceID                        : {2BC20959-4743-4FB3-9A9D-13A911CE9A7D}
InterfaceDescription              : Realtek Gaming 2.5GbE Family Controller
Name                              : Ethernet
Source                            : 2
SystemName                        : PC20
BusNumber                         : 7
DeviceNumber                      : 0
Dma64BitSupported                 : True
FunctionNumber                    : 0
LineBasedInterrupts               : False
LineBasedInterruptSupported       : True
LocationInformationString         : PCI-Bus 7, Gerät 0, Funktion 0
MaxInterruptMessages              : 32
MsiEnabled                        : True
MsiInterruptSupported             : True
MsiSupported                      : True
MsiXEnabled                       : True
MsiXInterruptSupported            : True
MsixMessageAffinityArray          : {MSFT_NetAdapter_Group_Affinity, MSFT_NetAdapter_Group_Affinity, MSFT_NetAdapter_Group_Affinity, MSFT_NetAdapter_Group_Affinity...}
MsiXSupported                     : True
NoInterrupt                       : False
NumaNode                          :
NumMsiMessages                    : 16
NumMsixTableEntries               : 32
PciCurrentSpeedAndMode            :
PciDeviceLabelID                  :
PciDeviceLabelString              :
PciDeviceType                     : 2
PciExpressCurrentLinkSpeedEncoded : 2
PciExpressCurrentLinkWidth        : 1
PciExpressCurrentPayloadSize      : 256
PciExpressMaxLinkSpeedEncoded     : 2
PciExpressMaxLinkWidth            : 1
PciExpressMaxPayloadSize          : 256
PciExpressMaxReadRequestSize      : 512
PciExpressVersion                 : 2
PciXCurrentSpeedAndMode           :
S0WakeupSupported                 : True
SegmentNumber                     : 0
SlotNumber                        :
PSComputerName                    :
CimClass                          : ROOT/StandardCimv2:MSFT_NetAdapterHardwareInfoSettingData
CimInstanceProperties             : {Caption, Description, ElementName, InstanceID...}
CimSystemProperties               : Microsoft.Management.Infrastructure.CimSystemProperties

PS C:\> Get-VMNetworkAdapter -ManagementOS | Set-VMNetworkAdapter -VmqWeight 0
Set-VMNetworkAdapter : Fehler beim Ändern der Verbindungseinstellungen für den virtuellen Ethernet-Switch.
Der automatische Switch für die gemeinsame Nutzung der Internetverbindung kann nicht geändert werden.
In Zeile:1 Zeichen:38
+ ... et-VMNetworkAdapter -ManagementOS | Set-VMNetworkAdapter -VmqWeight 0
+                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Set-VMNetworkAdapter], VirtualizationException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.SetVMNetworkAdapter

Oder wäre eine neue Netzwerkkarte die bessere Lösung? Welche würde ihr empfehlen für 1G oder höher? Wäre eine i350 noch OK?
MysticFoxDE
MysticFoxDE 02.12.2024 um 13:57:34 Uhr
Goto Top
Moin @StefanMUC,

Allein diese Abfrage dauert auf dem PC über 20 Sekunden:

😯 ... OK ... auf meiner Workstation benötigt die für 3 NIC's keine zwei Sekunden, das ist schon sehr kommisch. 😬

MsiEnabled                        : True
MsiInterruptSupported             : True
MsiSupported                      : True
MsiXEnabled                       : True
MsiXInterruptSupported            : True
MsixMessageAffinityArray          : {MSFT_NetAdapter_Group_Affinity, MSFT_NetAdapter_Group_Affinity, MsiXSupported                     : True
NumMsiMessages                    : 16
NumMsixTableEntries               : 32

OK, den ganzen MSI, respektive MSI-X Geraffel scheint die NIC zu unterstützen, daher musst du RSS nicht ausschalten, sondern es nur richtig konfigurieren. 😁
Denn wenn einen NIC kein MSI oder MSI-X unterstützt, dann ist es besser RSS auszuschalten. 🙃

Gut kannst du als nächstes mal die folgenden Befehle abfeuern und zwar beide Varianten aber bitte einen nach dem anderen ausführen ...

Get-NetAdapterRss -Name "Ethernet"  
Get-NetAdapterRss -Name "Ethernet" | select *  

... und anschliessend deren Ausgabe hier posten, danke.

PS C:\> Get-VMNetworkAdapter -ManagementOS | Set-VMNetworkAdapter -VmqWeight 0
Set-VMNetworkAdapter : Fehler beim Ändern der Verbindungseinstellungen für den virtuellen Ethernet-Switch.
Der automatische Switch für die gemeinsame Nutzung der Internetverbindung kann nicht geändert werden.
In Zeile:1 Zeichen:38
+ ... et-VMNetworkAdapter -ManagementOS | Set-VMNetworkAdapter -VmqWeight 0
+                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Set-VMNetworkAdapter], VirtualizationException
    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.SetVMNetworkAdapter

Sag ich doch, die meisten Powershells betreffend Hyper-V, funktionieren auf W11 nicht wirklich. 😔😭
Da wäre es fast besser, wenn du auf der Workstation gleich Server 2022 oder 2025 installierst.
Dann hast du auf jeden Fall was Hyper-V angeht, viel weniger Einschränkungen.

Oder wäre eine neue Netzwerkkarte die bessere Lösung?

Das kann ich dir stand jetzt nicht sagen und solange du W11 einsetzt, bringt eine Server NIC auch nicht wirklich viel,
weil W11 viele derer Features nicht wirklich unterstützt.

Welche würde ihr empfehlen für 1G oder höher?

Na ja, das kommt ganz darauf an was du damit machen möchtest, wenn nur kleine oder wenig Daten bewegt werden, dann reicht auch eine 1G NIC gut aus.

Wäre eine i350 noch OK?

Jup, die ist gut, aber bitte keine darunter.

Gruss Alex
StefanMUC
StefanMUC 02.12.2024 um 17:50:59 Uhr
Goto Top
55 sec zwischen Befehlseingabe und Ausgabe:
PS C:\> Get-NetAdapterRss -Name "Ethernet"  


Name                                            : Ethernet
InterfaceDescription                            : Realtek Gaming 2.5GbE Family Controller
Enabled                                         : True
NumberOfReceiveQueues                           : 2
Profile                                         : NUMAStatic
BaseProcessor: [Group:Number]                   : 0:0
MaxProcessor: [Group:Number]                    : 0:30
MaxProcessors                                   : 8
RssProcessorArray: [Group:Number/NUMA Distance] : 0:0/0  0:2/0  0:4/0  0:6/0  0:8/0  0:10/0  0:12/0  0:14/0
                                                  0:16/0  0:18/0  0:20/0  0:22/0  0:24/0  0:26/0  0:28/0  0:30/0
IndirectionTable: [Group:Number]                :

10 sec zwischen Befehlseingabe und Ausgabe:
PS C:\> Get-NetAdapterRss -Name "Ethernet" | select *  
Profile                       : NUMAStatic
ifAlias                       : Ethernet
InterfaceAlias                : Ethernet
ifDesc                        : Realtek Gaming 2.5GbE Family Controller
Caption                       : MSFT_NetAdapterRssSettingData 'Realtek Gaming 2.5GbE Family Controller'  
Description                   : Realtek Gaming 2.5GbE Family Controller
ElementName                   : Realtek Gaming 2.5GbE Family Controller
InstanceID                    : {2BC20959-4743-4FB3-9A9D-13A911CE9A7D}
InterfaceDescription          : Realtek Gaming 2.5GbE Family Controller
Name                          : Ethernet
Source                        : 2
SystemName                    : PC20
BaseProcessorGroup            : 0
BaseProcessorNumber           : 0
ClassificationAtDpcSupported  : False
ClassificationAtIsrSupported  : True
Enabled                       : True
HashKeySize                   :
IndirectionTable              :
IndirectionTableEntryCount    :
IPv4HashEnabled               :
IPv6ExtensionHashEnabled      :
IPv6HashEnabled               :
MaxProcessorGroup             : 0
MaxProcessorNumber            : 30
MaxProcessors                 : 8
MsiSupported                  : True
MsiXEnabled                   : True
MsiXSupported                 : True
NumaNode                      : 0
NumberOfInterruptMessages     : 32
NumberOfReceiveQueues         : 2
RssOnPortsSupported           : False
RssProcessorArray             : {MSFT_NetAdapter_RssProcessor, MSFT_NetAdapter_RssProcessor, MSFT_NetAdapter_RssProcessor,
                                MSFT_NetAdapter_RssProcessor...}
RssProcessorArraySize         : 16
TcpIPv4HashEnabled            :
TcpIPv4HashSupported          : True
TcpIPv6ExtensionHashEnabled   :
TcpIPv6ExtensionHashSupported : False
TcpIPv6HashEnabled            :
TcpIPv6HashSupported          : True
ToeplitzHashFunctionEnabled   :
ToeplitzHashFunctionSupported : True
UdpIPv4HashEnabled            :
UdpIPv4HashSupported          : False
UdpIPv6ExtensionHashEnabled   :
UdpIPv6ExtensionHashSupported : False
UdpIPv6HashEnabled            :
UdpIPv6HashSupported          : False
PSComputerName                :
CimClass                      : ROOT/StandardCimv2:MSFT_NetAdapterRssSettingData
CimInstanceProperties         : {Caption, Description, ElementName, InstanceID...}
CimSystemProperties           : Microsoft.Management.Infrastructure.CimSystemProperties

Da wäre es fast besser, wenn du auf der Workstation gleich Server 2022 oder 2025 installierst.
Dann hast du auf jeden Fall was Hyper-V angeht, viel weniger Einschränkungen.
Wäre auch der kostenlose HyperV-Server 2019 noch eine Alternative? Ansonsten würde ich auch in Richtung Proxmox tendieren ...
MysticFoxDE
MysticFoxDE 06.12.2024 um 08:38:03 Uhr
Goto Top
Moin @StefanMUC,

sorry, dass ich mich jetzt erst melde, bin aktuell jedoch gut Land unter.

55 sec zwischen Befehlseingabe und Ausgabe:

10 sec zwischen Befehlseingabe und Ausgabe:

Alleine schon dieses Verhalten, also, dass die PowerShell Befehle so lange benötigen, zeigt,
dass das den Hyper-V zugrundeliegende Windows selbst, wahrscheinlich einen ordentlichen Schuss hat.
Denn beide Befehle benötigen bei meiner Workstation und auch auf dem Notebook 1-2 Sekunden und beide haben sicherlich keine 32/64 Kerne zur Verfügung, wie es bei dir der Fall ist.

Wäre auch der kostenlose HyperV-Server 2019 noch eine Alternative?

Der hat noch strengere Hardwareanforderungen. 😬

Ansonsten würde ich auch in Richtung Proxmox tendieren ...

Das könnte in diesem Fall tatsächlich die bessere Wahl sein.
Ich hatte selber bisher jedoch noch keine Zeit Proxmox richtig zu testen, daher kann ich dazu auch nicht viel sagen/schreiben.

Muss weiterflitzen.

Gruss Alex