- GPU-passthrough (vDGA/VMDirectPath I/O) in VMware koppelt een volledige fysieke GPU aan een virtuele machine om prestaties te bereiken die bijna gelijk zijn aan die van een native GPU.
- Het gebruik ervan vereist strikte eisen. hardware (VT-d/AMD-V, IOMMU, MMIO 64-bit) en EFI/UEFI-firmware op de virtuele machine.
- Het inschakelen van vDGA resulteert in het verlies van belangrijke vSphere-functies zoals vMotion, DRS en snapshots op de VM die de GPU in passthrough-modus gebruikt.
- In vergelijking met vGPU en andere oplossingen geeft vDGA prioriteit aan dedicated prestaties boven flexibiliteit en de mogelijkheid om de GPU te delen tussen meerdere VM's.
Een fysieke GPU rechtstreeks aansluiten op een virtuele machine in VMware. Het is een van die veranderingen die echt een verschil maakt bij het werken met zware grafische belasting. IA of 3D-rendering. Overstappen van een geëmuleerde grafische kaart naar directe toegang via passthrough (vDGA / VMDirectPath I/O) kan de prestaties van de VM dichter bij die van een fysieke machine brengen, maar brengt wel een aantal vereisten en beperkingen met zich mee die vooraf duidelijk moeten zijn.
Bovendien bestaan er in het huidige ecosysteem verschillende manieren om de GPU in gevirtualiseerde omgevingen te gebruiken: Speciale passthrough, gedeelde vGPU en technologieën zoals BitFusion of GPU-partitionering.Het is essentieel om te begrijpen wat elk van deze componenten doet, in welke gevallen ze van pas komen en hoe ze geconfigureerd worden in vSphere/ESXi (en hoe ze zich verhouden tot vergelijkbare technologieën zoals Hyper-V DDA). Zo voorkom je dat je vastloopt met de hardware of de gekozen hypervisorversie.
Wat is GPU-passthrough (vDGA / VMDirectPath I/O) in VMware?
GPU-passthrough in VMware, ook wel bekend als vDGA of VMDirectPath I/O.Dit is een werkingsmodus waarbij een fysieke grafische kaart die in de ESXi-host is geïnstalleerd, direct aan een virtuele machine wordt toegewezen. In plaats van een grafische adapter te gebruiken die door de hypervisor wordt geëmuleerd, ziet het gastbesturingssysteem de GPU bijna alsof deze is aangesloten op een fysiek moederbord.
Deze snelkoppeling stelt de VM in staat hiervan te profiteren alle kracht van de grafische chip, het videogeheugen en de geavanceerde functies Ondersteunt bijvoorbeeld CUDA, OpenCL, Direct3D en OpenGL native, met zeer weinig extra overhead van de hypervisor. In VMware-labtests wordt doorgaans een prestatieverlies van ongeveer 4-5% gerapporteerd in vergelijking met het draaien van dezelfde GPU op bare metal.
In de praktijk betekent het gebruik van GPU-passthrough dat Die kaart is volledig toegewezen aan één enkele virtuele machine.Er vindt geen fijnmazige toewijzing van resources plaats tussen meerdere VM's, en er wordt ook geen softwarelaag van derden op ESXi geladen om de grafische kaart te delen, in tegenstelling tot wat er gebeurt met vGPU-oplossingen zoals NVIDIA ROOSTER.
Het is belangrijk om deze aanpak te onderscheiden van andere manieren om GPU's te gebruiken bij virtualisatie, zoals NVIDIA vGPU (gedeelde vGPU), RemoteFX/partitionering op Hyper-V of BitFusion-achtige oplossingen, die tot doel hebben een GPU of een pool van GPU's te verdelen over meerdere machines met verschillende virtualisatie- of remote redirectietechnieken.
Als we het in de VMware-wereld over vDGA hebben, beschrijven we in feite dit: directe toewijzing van het PCIe-apparaat van de GPU aan de VM Het gebruik van VMDirectPath I/O, met alle voor- en nadelen (prestaties) en beperkingen op het gebied van mobiliteit en hoge beschikbaarheid die dat met zich meebrengt.

Voordelen van het gebruik van GPU-passthrough in vSphere
De belangrijkste reden om over te stappen op vDGA is dat De grafische en rekenprestaties benaderen die van een fysieke computer zeer dicht.Door een groot deel van de virtualisatielaag voor dat PCIe-apparaat weg te laten, verdwijnen de typische knelpunten van de geëmuleerde GPU en kan de VM veel soepeler werken met games, 3D-applicaties of AI-engines.
Dit is vooral merkbaar in situaties waarin de geïntegreerde GPU's of de standaard geëmuleerde virtuele grafische kaart verre van optimaal presteren: Geavanceerd grafisch ontwerp, CAD, 3D-modellering en -rendering, videobewerking, animatie en game-ontwikkeling.Het is ook cruciaal voor het trainen van machine learning-modellen en AI-workloads die sterk afhankelijk zijn van CUDA of vergelijkbare tools.
Een ander duidelijk voordeel is het flexibelere gebruik van hardware op datacenterniveau. In plaats van een fysieke werkplek per gebruiker of per projectHet is mogelijk om een voldoende grote ESXi-host toe te wijzen aan meerdere virtuele machines, elk met een eigen GPU in passthrough-modus, en te spelen met schema's of piekbelasting.
In bepaalde omgevingen, met name als er al servers met vrije PCIe-slots beschikbaar zijn, de kosten per gebruiker of per project Het kan voordeliger zijn dan het onderhouden van een vloot krachtige fysieke werkstations, vooral als de grafische kaart niet 24 uur per dag nodig is en kan worden aangepast aan perioden van intensief gebruik.
Tot slot is er ook nog een indirect voordeel op het gebied van beveiliging en bedrijfsvoering: door grafische workloads te behouden. binnen geïsoleerde virtuele machinesAls er iets misgaat (een beveiligingslek, een problematische driver, een verkeerde configuratie), is het gemakkelijker om de impact te beperken, terug te keren naar een eerdere momentopname of een back-up terug te zetten, zolang de beperkingen van passthrough, die we later zullen bespreken, in acht worden genomen.
GPU-passthrough versus vGPU en andere alternatieven
Binnen het VMware-ecosysteem zijn er verschillende manieren om een grafische kaart te gebruiken, en niet alle methoden houden in dat de kaart volledig aan één virtuele machine wordt toegewezen. De bekendste methoden zijn: vDGA/VMDirectPath I/O, vGPU (NVIDIA GRID of andere) en oplossingen voor toegang op afstand/externe computing zoals BitFusion.
In de directe doorvoermodus (vDGA) wordt de GPU toegewezen. uitsluitend voor een virtuele machineDe rekenkernen en het VRAM worden niet gedeeld tussen meerdere virtuele machines, en de rol van de hypervisor is vrijwel nihil, afgezien van het routeren van het PCIe-apparaat naar de gast-VM. Het is de eenvoudigste optie om te begrijpen en de optie die het meest lijkt op een fysieke server met een dedicated grafische kaart.
Bij de vGPU-aanpak wordt gespecialiseerde software gebruikt (bijvoorbeeld NVIDIA GRID vGPU op VMware vSphereHet verzorgt GPU-virtualisatie op controllerniveau en stelt virtuele instanties van de GPU beschikbaar die gelijktijdig aan meerdere virtuele machines kunnen worden toegewezen. Elke virtuele machine ziet een "gedeelte" van de GPU met gegarandeerde of gedeelde resources.
vGPU's maken het mogelijk dat meerdere virtuele desktops of servers één enkele grafische kaart delen, wat erg handig is in VDI, lichtgewicht, versnelde kantooromgevingen, grafische werkstations voor de frontlinie in de detailhandel of horeca.of scenario's waarbij het piekgebruik van de grafische kaart ongelijk verdeeld is over de gebruikers. Daar staat tegenover dat er enige overhead is en dat niet dezelfde piekprestaties worden behaald als met een volledige fysieke GPU die aan één virtuele machine is toegewezen.
Er zijn ook oplossingen zoals BitFusion Flexdirect en vergelijkbare technologieënwaardoor GPU's via het netwerk door verschillende virtuele machines kunnen worden gebruikt, ideaal voor AI- en HPC-workloads waarbij de GPU meer fungeert als een externe rekenbron dan als een videokaart voor de grafische interface van de gebruiker.
Kies tussen vDGA, vGPU of een model met een externe GPU. Het hangt ervan af of je een GPU volledig wilt benutten voor één enkele machine (passthrough), of je een dure kaart wilt verdelen over meerdere gebruikers met een gemiddelde werklast (vGPU), of dat het erom gaat een pool van GPU's te beheren voor gedistribueerde computing (BitFusion en vergelijkbare oplossingen).
Hardwarevereisten voor het gebruik van vDGA op ESXi
Voordat u een GPU-passthrough-implementatie in VMware plant, moet u ervoor zorgen dat de Het hardwareplatform voldoet aan een reeks voorwaarden. die verder gaan dan "het hebben van een grafische kaart aangesloten op de server".
Ten eerste moeten de processor en chipset van het moederbord van de ESXi-host dit ondersteunen. virtualisatie met IOMMU. In Intel Dit wordt bereikt via Intel VT-x plus VT-dy, en via AMD via AMD-V met IOMMU. De BIOS/UEFI van de server heeft hiervoor meestal specifieke opties. virtualisatie-extensies activeren van I/O.
Ten tweede moet u controleren of de steunplaat MMIO-geheugenmapping boven 4 GB (soms aangeduid als "Decodering boven 4G", "geheugen-gemapte I/O boven 4G" of iets dergelijks). Dit is vooral belangrijk bij high-end GPU's zoals TeslaP100, V100 en equivalenten, die zeer grote geheugenregio's declareren in hun BAR (Base Address Registers).
Sommige van deze hoogwaardige kaarten kunnen kaarten weergeven. meer dan 16 GB MMIO-ruimteDaarom, naast het spelen van de BIOSVervolgens moeten bepaalde parameters in de geavanceerde VM-instellingen van vSphere worden aangepast, zodat de virtuele machine met die GPU kan opstarten zonder foutmeldingen over onvoldoende resources.
Uiteraard moet de GPU zelf wel aanwezig zijn. compatibel met het serverplatform en ondersteund worden door de hostfabrikant (Dell, HPE, Lenovoenz.) wanneer ze in passthrough-modus worden gebruikt. In de praktijk werken de meeste moderne PCIe GPU's, maar het is raadzaam om compatibiliteitslijsten te raadplegen, vooral voor GRID-kaarten of zeer nieuwe modellen.
Softwarevereisten en versiecompatibiliteit
Op softwareniveau is het belangrijk om duidelijk te maken dat VMware biedt wel degelijk ondersteuning voor vDGA in vSphere 6.x en latere versies.Sommige gebruikers hebben echter specifieke problemen gemeld met bepaalde hardwarecombinaties (bijvoorbeeld NVIDIA GRID GPU's in Dell R720-servers met ESXi 6.x).
In dergelijke gevallen komen vaak foutmeldingen voor zoals "apparaat is al in gebruik" of symptomen die erop wijzen dat... Passthrough werkte niet meer na de upgrade van ESXi 5.5 naar 6.x.Terwijl het in werkelijkheid gaat om specifieke bugs, wijzigingen in het PCI-apparaatbeheer of stuurprogramma's, in plaats van een officiële stopzetting van de ondersteuning.
Het gastbesturingssysteem dat de GPU in passthrough-modus gaat gebruiken, moet aan de volgende eisen voldoen: Officiële stuurprogramma's van de fabrikant zijn geïnstalleerd in de virtuele machine. (NVIDIA, AMD, Intel), aangezien ESXi geen specifiek stuurprogramma voor die kaart laadt bij gebruik van VMDirectPath I/O; de hypervisor stelt het apparaat eenvoudigweg beschikbaar aan het gastbesturingssysteem.
Bovendien moet de VM zo geconfigureerd worden dat deze opstart in EFI- of UEFI-modus Bij gebruik van GPU's die grote MMIO-geheugenregio's declareren. Dit detail is cruciaal: onjuiste VM-firmware kan tot storingen leiden. Boot of dat de GPU niet correct wordt geïnitialiseerd door het gastbesturingssysteem.
Aan de clientzijde, als toegang tot de VM plaatsvindt via Extern bureaublad (RDP of andere protocollen)De juiste beleidsregels moeten worden geactiveerd, zodat het gastsysteem in externe sessies de hardwarematige grafische adapter gebruikt en niet vastzit aan een generieke driver zonder hardwareversnelling.

De ESXi-host configureren om de GPU in passthrough-modus te gebruiken.
De eerste praktische stap is het voorbereiden van de vSphere/ESXi-server om de GPU beschikbaar te stellen als een DirectPath I/O-apparaat.Dit houdt in dat je toegang krijgt tot de BIOS, de PCI-inventaris op de host controleert en de kaart markeert zodat deze aan virtuele machines kan worden toegewezen.
Als de GPU grote MMIO-geheugenregio's (16 GB of meer) vereist, moet u in de BIOS/UEFI van de server zoeken naar opties zoals “Decodering boven 4G” of “PCI 64-bits resourceverwerking boven 4G” en activeer ze. De exacte naam verschilt per fabrikant, maar is meestal te vinden in de PCI-instellingen of het gedeelte met geavanceerde opties.
Zodra ESXi met deze instellingen is gestart, kunt u in de vSphere-client naar de betreffende host gaan en toegang krijgen tot de instellingen. “Configureren → Hardware → PCI-apparaten → Bewerken” Om de lijst met gedetecteerde PCI-apparaten te bekijken, ziet u NVIDIA-, AMD- of vergelijkbare kaarten samen met de rest van de PCI-hardware van de server.
Als DirectPath I/O nog niet is ingeschakeld voor de GPU, vink dan het vakje aan. doorgeefluik bij uw ingang binnen die lijst. Wanneer u de wijzigingen opslaat, zal vSphere u vragen de host opnieuw op te starten om de configuratie toe te passen, aangezien de hypervisor het apparaat moet reserveren en voorbereiden om opnieuw aan VM's te worden toegewezen.
Na de herstart, bij terugkeer naar het betreffende gedeelte “Configureren → Hardware → PCI-apparaten” Er verschijnt een venster met een titel als "DirectPath I/O PCI-apparaten beschikbaar voor VM's", waarin alle apparaten worden weergegeven die beschikbaar zijn gekomen voor gebruik in virtuele machines, waaronder GPU's en in veel gevallen geavanceerde netwerkadapters zoals Mellanox.
De virtuele machine voorbereiden en configureren
Nu de host gereed is, is de volgende stap het creëren of aanpassen van de virtuele machine die de GPU zal gebruiken. Het eerste wat u moet doen, is ervoor zorgen dat de VM Het is gemaakt met geschikte EFI/UEFI-firmware., met name in scenario's met krachtige GPU's en een hoge MMIO-waarde.
Selecteer in de vSphere-client de virtuele machine en ga naar “Instellingen bewerken → VM-opties → Opstartopties” Controleer of "EFI" of "UEFI" is geselecteerd in het veld "Firmware". Zo niet, dan moet dit worden gewijzigd (en in sommige gevallen moet de VM of het besturingssysteem opnieuw worden aangemaakt als het deze hot-swapping niet ondersteunt).
Bij gebruik van passthrough met kaarten die meer dan 16 GB MMIO-ruimte toewijzen, is het raadzaam om enkele geavanceerde parameters in de VM-configuratie aan te passen. Deze zijn toegankelijk via “Instellingen bewerken → VM-opties → Geavanceerd → Configuratieparameters → Configuratie bewerken”Daar kunt u sleutels toevoegen die gerelateerd zijn aan pciPassthrough om te bepalen hoe de adresruimte wordt gereserveerd.
Concreet wordt het gebruik van 64-bits MMIO meestal ingeschakeld en wordt er een grootte voor dat gebied gedefinieerd, berekend op basis van Hoeveel krachtige GPU's worden aan de virtuele machine toegewezen?De vuistregel is meestal om 16 te vermenigvuldigen met het aantal GPU's en het resultaat af te ronden naar de dichtstbijzijnde macht van twee (bijvoorbeeld, twee van zulke GPU's zouden resulteren in 64 GB 64-bits MMIO).
Na het aanpassen van deze parameters wordt de installatie uitgevoerd of wordt gecontroleerd of de installatie correct is. Het gastbesturingssysteem ondersteunt EFI/UEFI en is in staat om de betreffende geheugengrootte en GPU te verwerken.Op dit moment is de grafische kaart nog niet aangesloten op de virtuele machine; de omgeving wordt alleen nog maar voorbereid, zodat alles zonder fouten opstart als gevolg van een gebrek aan resources of incompatibele firmware.
Wijs de GPU toe aan de VM met behulp van VMDirectPath I/O.
Zodra de host de GPU als beschikbaar voor DirectPath I/O heeft gemarkeerd en de VM correct is geconfigureerd, is het tijd om koppel de kaart fysiek aan die virtuele machine.Deze stap moet worden uitgevoerd terwijl de virtuele machine volledig is uitgeschakeld.
Selecteer in de vSphere-client de VM en voer de volgende gegevens in: "Instellingen bewerken" om de virtuele hardware te bekijken.In de lijst met apparaten kunt u op 'Nieuw apparaat toevoegen' klikken en 'PCI-apparaat' kiezen als de GPU nog niet in de lijst staat. Selecteer vervolgens het PCI-apparaat dat overeenkomt met de grafische kaart (bijvoorbeeld de NVIDIA- of AMD-kaart die op de host is gedetecteerd).
Wanneer de configuratie is opgeslagen, zal de virtuele machine zoiets als dit op zijn hardware weergeven. "PCI-apparaat 0" is gekoppeld aan de specifieke GPU.Vanaf dit moment zal het gastbesturingssysteem bij het opstarten een extra PCIe-adapter detecteren die overeenkomt met de fysieke grafische kaart.
Het is essentieel dat de virtuele machine beschikt over al het geheugen dat eraan is toegewezen, is gereserveerd.In vSphere wordt dit geconfigureerd via "Instellingen bewerken → Virtuele hardware → Geheugen", waarbij de waarde voor "Reservering" wordt ingesteld op de hoeveelheid RAM die voor de VM is geconfigureerd. Zonder deze volledige reservering kan PCI-passthrough mislukken of intermitterende problemen ondervinden.
Nadat de virtuele machine is ingeschakeld, op een systeem Linux De aanwezigheid van de GPU kan worden geverifieerd met commando's type lspci | grep nvidiaIn Windows verschijnt het onder 'Beeldschermadapters' in de instellingen. ApparaatbeheerHet is normaal om zowel de door VMware geëmuleerde grafische adapter als de dedicated fysieke GPU te zien.
De laatste stap is het installeren van het volgende op het gastapparaat: chauffeurs Functionarissen van de GPU-fabrikant, gedownload van de NVIDIA-, AMD- of Intel-websites, en vermijd het gebruik van generieke stuurprogramma's of stuurprogramma's die door de fabrikant worden aangeleverd. Windows updatedie mogelijk niet geoptimaliseerd zijn voor doorvoerscenario's.
Beperkingen van vSphere en functies die niet werken met vDGA
De keerzijde van GPU-passthrough in VMware is dat Verschillende geavanceerde functies van het platform gaan verloren. door een fysiek apparaat rechtstreeks aan een virtuele machine toe te wijzen. Dat is de prijs die je betaalt voor die bijna native prestaties.
Het eerste grote offer is vMotion en DRSEen virtuele machine met een GPU in passthrough-modus kan niet zonder voorafgaande toestemming naar een andere host worden gemigreerd, omdat de kaart fysiek aan de oorspronkelijke server is gekoppeld. Geautomatiseerde load balancing-beleidsregels waarbij de VM tussen hosts in het cluster wordt verplaatst, kunnen evenmin worden gebruikt.
Kenmerken zoals Traditionele momentopnamen of bepaalde mechanismen voor hoge beschikbaarheid voor die specifieke virtuele machine. Omdat deze afhankelijk is van zeer specifieke fysieke hardware, is de mogelijkheid om complexe toestanden te bevriezen en te herstellen beperkt.
Een ander aspect om te overwegen is dat in deze modus, De GPU wordt niet gedeeld door meerdere virtuele machines.Als er meerdere desktops of servers met grafische versnelling op dezelfde machine nodig zijn, is er één kaart per virtuele machine vereist. Als alternatief kan een vGPU-model worden gebruikt, waarbij de kaart over meerdere instanties wordt gevirtualiseerd.
Aan de kant van de ondersteuning kunnen er specifieke gevallen zijn waarin Bepaalde combinaties van hardware en stuurprogramma's kunnen problemen veroorzaken.Zoals sommige gebruikers hebben ondervonden bij het upgraden naar ESXi 6.x met NVIDIA GRID-kaarten op specifieke servers (bijv. Dell R720), is het raadzaam om in deze gevallen de documentatie van VMware en de GPU-fabrikant te raadplegen en indien nodig een supportticket aan te maken.
Tot slot moet worden opgemerkt dat bepaalde technologieën of diensten die interactie hebben met grafische elementen, zoals externe bureaubladen, Linux-subsystemen in Windows of geavanceerde besturingssysteemfunctiesZe kunnen interfereren met, of "Code 43"-fouten veroorzaken in, NVIDIA-stuurprogramma's als ze detecteren dat u werkt in een virtuele machine met GPU-passthrough.
GPU-passthrough in andere hypervisors: parallel met Hyper-V
Hoewel de focus hier op VMware ligt, is het de moeite waard om te begrijpen hoe andere hypervisors (bijvoorbeeld virtualisatie met KVM en virt-manager) voorzien in dezelfde behoefte om een fysieke GPU toe te wijzen aan een VM.omdat de terminologie en de instrumenten veranderen, maar het onderliggende idee hetzelfde blijft.
In Hyper-V is het equivalent van VMware VMDirectPath I/O het volgende: Directe apparaattoewijzing met behulp van DDA (Discrete Device Assignment)Deze techniek maakt het mogelijk om een specifiek PCIe-apparaat, zoals een GPU of NVMe, rechtstreeks in een virtuele Windows-machine te mappen, met een mate van controle en prestaties vergelijkbaar met passthrough in ESXi.
Oudere versies van Windows Server maakten gebruik van deze technologie. RemoteFX om GPU-virtualisatie aan te bieden en een grafische kaart te delen tussen meerdere virtuele machines. Met de tijdVanwege beveiligingsproblemen en prestatiebeperkingen (zoals de limiet van 1 GB VRAM per VM en 30 FPS) heeft Microsoft RemoteFX uitgefaseerd en DDA als de belangrijkste methode voor dedicated GPU-scenario's aangewezen.
In Windows 10 en Windows 11Vooral bij bepaalde compilaties is er steeds meer steun voor te vinden. GPU-partitionering en hergebruikte mechanismen van WSL2 en Windows SandboxDe configuratie ervan vereist echter doorgaans complexe scripts en het kopiëren van stuurprogramma's van de host naar de gast, wat niet zo eenvoudig is als het toewijzen van een apparaat in vSphere.
Door deze alternatieven te kennen, kunnen we inzien dat De filosofie is om bijna native toegang tot de GPU te bieden via een direct PCIe-kanaal. Het is een functie die door meerdere hypervisors wordt gebruikt, hoewel elk zijn eigen nuances, commando's en compatibiliteitsbeperkingen heeft.
Dit complete ecosysteem van passthrough, vGPU en DDA laat zien dat, mits correct geconfigureerd en met de juiste hardware, Het is volkomen haalbaar om krachtige GPU's te gebruiken binnen virtuele machines voor productie Voor taken die variëren van veeleisende grafische desktops tot AI en HPC, moet u er altijd rekening mee houden dat u bepaalde gemakken van traditionele virtualisatie zult moeten opgeven en dat u goed moet letten op stuurprogramma's, hypervisorversies en de ondersteuning door GPU-fabrikanten.
Gepassioneerd schrijver over de wereld van bytes en technologie in het algemeen. Ik deel mijn kennis graag door te schrijven, en dat is wat ik in deze blog ga doen: je de meest interessante dingen laten zien over gadgets, software, hardware, technologische trends en meer. Mijn doel is om u te helpen op een eenvoudige en onderhoudende manier door de digitale wereld te navigeren.
