Hoe configureert u SR-IOV voor Hyper-V virtuele machines op Windows Server?

Hoe u SR-IOV in Hyper-V kunt inschakelen en problemen ermee kunt oplossen

SR-IOV werkend krijgen op Hyper-V kan een behoorlijke uitdaging zijn, vooral omdat het niet altijd even eenvoudig is. Als je een server hebt en je virtuele machines rechtstreeks met je netwerkhardware wilt laten communiceren voor betere prestaties, dan kan dit je een hoop frustratie besparen. SR-IOV laat VM’s in principe een deel van de virtuele switchverwerking van Hyper-V omzeilen en rechtstreeks met de netwerkadapter communiceren, wat resulteert in hogere snelheden en een lagere CPU-belasting. Maar het is natuurlijk niet zo simpel als een schakelaar omzetten, want hardwareondersteuning en BIOS-instellingen zijn erg belangrijk. In sommige configuraties lijkt het alsof de ondersteuning er is, maar werkt het niet, of krijg je vreemde resets bij het inschakelen. Daarom leggen we hier stap voor stap uit, gebaseerd op praktijkervaring, hoe je SR-IOV inschakelt en veelvoorkomende problemen oplost. Zodra alles correct is ingesteld, zul je een hogere doorvoer, lagere latentie en een lagere belasting van je host-CPU merken. De moeite waard als je VM’s veel netwerkverkeer verwerken. Maar verwacht geen wonderen als uw hardware niet wordt ondersteund of als de BIOS-instellingen niet correct zijn.

Hoe u de ondersteuning en activering van SR-IOV in Windows Hyper-V kunt herstellen

Controleer met PowerShell of uw hardware SR-IOV ondersteunt.

Als SR-IOV niet werkt, controleer dan eerst of uw server dit überhaupt op hardwareniveau *ondersteunt*.U kunt dit doen door een snel commando uit te voeren:

(Get-VMHost).IovSupport; (Get-VMHost).IovSupportReasons

Als de uitvoer voor `IovSupport` ‘True’ aangeeft, is uw server geschikt. Als het ‘False’ is, geven de redenen in `IovSupportReasons` aan waarom — mogelijk ondersteunt uw chipset geen interrupt-remapping, of mist uw processor second-level address translation (SLAT, EPT voor Intel, RVI/NPT voor AMD).Soms is het gewoon uitgeschakeld in de BIOS, dus het is de moeite waard om daar als volgende te controleren. Houd er ook rekening mee dat bepaalde moederbordchipsets, met name die met oudere of consumentenhardware, mogelijk niet volledig SR-IOV ondersteunen, zelfs als de datasheets dit wel beweren.

Controleer de BIOS-instellingen en de ondersteunde hardwarefuncties.

De meeste problemen worden veroorzaakt door een onjuiste BIOS-configuratie. Om SR-IOV te laten werken, moet u over het algemeen het volgende inschakelen: – Virtualisatieondersteuning (Intel VT-x/VT-d of AMD-V/SVM) – IOMMU (Input-Output Memory Management Unit) – SR-IOV-ondersteuning zelf – ASPM (Active State Power Management), soms nodig. U vindt deze opties in uw BIOS-menu’s onder secties zoals Geavanceerd, CPU-configuratie of Onboard Devices. Het is een beetje vreemd, maar op sommige moederborden activeert het inschakelen van ASPM plus virtualisatieondersteuning automatisch SR-IOV-ondersteuning, zelfs als dit niet expliciet wordt vermeld.Tip: Op sommige hardware kan het gebeuren dat als u SR-IOV eerder in de BIOS had uitgeschakeld en het nu inschakelt, uw Windows-systeem uw netwerkconfiguraties reset of het statische IP-adres verliest. Wees voorbereid om de netwerkinstellingen opnieuw te configureren als dit gebeurt.

Zorg ervoor dat uw netwerkadapter SR-IOV daadwerkelijk ondersteunt en dat dit is ingeschakeld.

Voer dit uit in PowerShell:

Get-NetAdapterSriov | Sort-Object Name | Format-Table Name, InterfaceDescription, SriovSupport

Het laat je zien welke adapters SR-IOV-ondersteuning hebben in- of uitgeschakeld. Niet alle netwerkkaarten ondersteunen het, zelfs als de specificaties dit wel aangeven. Sommige netwerkkaarten ondersteunen SR-IOV alleen in bepaalde firmwareversies of vereisen een driverupdate. Controleer ook de handleiding van je moederbord of de documentatie van de fabrikant; ondersteuning is niet universeel.

Maak de virtuele switch aan met SR-IOV ingeschakeld – vergeet dat niet!

Bij het instellen van uw virtuele Hyper-V-switch moet u ervoor zorgen dat SR-IOV direct is ingeschakeld. U kunt dit niet later nog doen; als u dit vergeet, moet u de switch verwijderen en opnieuw aanmaken. Gebruik hiervoor PowerShell:

New-VMSwitch -Name "MySRIOVSwitch" -NetAdapterName "Ethernet 2" -EnableIov $true

Als u de voorkeur geeft aan een grafische gebruikersinterface (GUI), gaat u naar Virtual Switch Manager in Hyper-V, maakt u een nieuwe externe switch aan en vinkt u het vakje Single-root I/O virtualization (SR-IOV) inschakelen aan. Deze optie is soms verborgen, dus PowerShell is hier betrouwbaarder.Belangrijke opmerking: In sommige gevallen werkt SR-IOV niet, zelfs niet als de switch niet is gekoppeld aan een adapter die SR-IOV ondersteunt. Controleer ook of het stuurprogramma van uw netwerkadapter officieel SR-IOV ondersteunt; dat kan de oorzaak van het probleem zijn.

Controleer na de installatie of de switch en adapters SR-IOV ondersteunen.

Loop:

Get-VMSwitch | Format-Table Name, IovSupport, IovSupportReasons, IovEnabled

Hier moet `IovEnabled` op `True` staan. Zo niet, controleer dan of uw adapter SR-IOV ondersteunt of dat de switch correct is ingesteld. Om te zien welke netwerkadapters SR-IOV ondersteunen:

Get-NetAdapterSriov | Sort-Object Name | Format-Table Name, InterfaceDescription, SriovSupport

Als uw adapter `SriovSupport` als `False` weergeeft, dan is dat het probleem: de hardware of de driverondersteuning is de beperkende factor.

Schakel SR-IOV in op uw virtuele machines.

Zodra de fysieke laag wordt ondersteund, kunt u SR-IOV inschakelen voor de netwerkadapter van uw VM. Ga in Hyper-V Manager naar uw VM, selecteer Instellingen en schakel vervolgens onder Netwerkadapter > Hardwareversnelling het vakje SR-IOV inschakelen in. Of via PowerShell:

Set-VMNetworkAdapter -VMName "MyVM" -Name "Network Adapter" -IovWeight 100

Door `IovWeight` op 0 in te stellen, wordt SR-IOV uitgeschakeld; als je het op 100 laat staan, wordt het ingeschakeld. In sommige configuraties zie je mogelijk direct een selectievakje voor deze optie.

Controleer de logboeken en de gebeurtenisviewer op SR-IOV-fouten.

Als het nog steeds niet werkt, kan de Windows Logboeken een goudmijn zijn. Kijk onder: Toepassings- en servicelogboeken > Microsoft > Windows > Hyper-V-SynthNic > Admin. Mogelijk ziet u logboekvermeldingen zoals: – `12597 Netwerkadapter (%NIC_ID%) verbonden met virtueel netwerk.` – `12588 Netwerkadapter (%NIC_ID%) heeft een virtuele functie toegewezen.`.Eventuele fouten hier kunnen wijzen op problemen met stuurprogramma’s, hardwarefouten of configuratiefouten.

In sommige configuraties lijkt SR-IOV wel ondersteund te worden, maar werkt het niet direct na het inschakelen. Een herstart helpt soms om alle nieuwe firmware-instellingen correct te laden.

Windows maakt het natuurlijk onnodig ingewikkeld. Maar met geduld en de juiste ondersteuning zou je een directere, snellere verbinding voor je virtuele machines moeten kunnen realiseren.

Samenvatting

  • Controleer de hardwareondersteuning met PowerShell (`(Get-VMHost).IovSupport`)
  • Controleer de BIOS-instellingen: virtualisatie, IOMMU, SR-IOV-ondersteuning
  • Zorg ervoor dat de netwerkkaart SR-IOV ondersteunt en dat dit is ingeschakeld in Windows.
  • Maak de virtuele switch aan met `-EnableIov $true` vanuit PowerShell.
  • Zorg ervoor dat SR-IOV is ingeschakeld in de instellingen van de netwerkadapters van de virtuele machine.
  • Controleer de logbestanden als er iets misgaat.

Samenvatting

Het is een ware beproeving voor je geduld om SR-IOV daadwerkelijk aan de praat te krijgen – hardwareproblemen, BIOS-problemen, driverproblemen, noem maar op. Maar als het eenmaal werkt, is de prestatieverbetering merkbaar, vooral bij zwaardere belasting. Niet elke hardwareconfiguratie ondersteunt het perfect, maar als jouw apparatuur compatibel is, lukt het meestal wel met deze stappen. Hopelijk bespaart dit iemand een paar uur. Succes, en laten we hopen dat dit helpt!