Kan en integrerad GPU delas mellan en virtuell maskin och värdcontainrar?

Eva Wong är Teknisk skribent och den boende fixaren på ZimaSpace. En livslång nörd med en passion för hemma-labb och öppen källkod, hon specialiserar sig på att översätta komplexa tekniska koncept till tillgängliga, praktiska guider. Eva tror att självhosting ska vara roligt, inte skrämmande. Genom sina handledningar ger hon gemenskapen verktyg att avmystifiera hårdvaruinstallationer, från att bygga sin första NAS till att bemästra Docker-containrar.

Ibland. Full PCI-genomkoppling ger den virtuella maskinen hela den integrerade grafikprocessorn, så containrar på värden förlorar normalt åtkomsten. Delning kräver maskinvaru- och drivrutinsstöd för medierade enheter, Intel GVT-g på vissa äldre plattformar eller SR-IOV-virtuella funktioner på nyare plattformar som stöds.

Containeråtkomst är ett separat lager: containrar delar vanligtvis värdens kärna och använder renderingsenheter som `/dev/dri/renderD128`. En virtuell maskin behöver en virtualiserad grafikfunktion eller medierad enhet i stället för den enhetsnoden på värden. Den skillnaden avgör den säkra konfigurationen, valideringsmetoden och återställningspunkten.

Identifiera vilket virtualiseringsläge din plattform stöder

Börja med den exakta CPU-generationen, iGPU:ns PCI-ID, den inbyggda programvaran, värdens kärna och drivrutin. En guide för en Intel-generation kanske inte gäller för en annan, och vissa delningsmetoder har tagits ur bruk eller kräver moduler utanför kärnträdet.

Om endast full genomkoppling stöds väljer du antingen den virtuella maskinen eller värden för maskinvaruacceleration. Förvänta dig inte att en container på värden behåller Quick Sync efter att värdens drivrutin har kopplats bort.

Om SR-IOV eller medierade enheter stöds behåller du den fysiska funktionen på värden och tilldelar en virtuell funktion eller en mdev till den virtuella maskinen. Bekräfta återställnings- och drivrutinsbeteendet innan du betraktar lösningen som produktionsklar.

Använd kapacitets- och arbetsbelastningssignaler

Kontrollera att värden fortfarande exponerar en renderingsnod och att den virtuella maskinen ser sin tilldelade virtuella grafikprocessor. Kör maskinvaruavkodning eller -kodning i båda miljöerna i stället för att förlita dig på enhetslistningar.

Övervaka grafikprocessorns motorbelastning, fel, minnestryck och kärnloggar under samtidiga omkodningar. Delningskapacitet garanterar inte förutsägbar prestanda eller stöd för alla kodekar.

Använd tabellen nedan för att välja en säker driftmodell.

Observerat tillstånd Bedömning Nästa åtgärd
Full PCI-genomkoppling Exklusiv användning av den virtuella maskinen Containrar på värden förlorar iGPU
mdev/GVT-g som stöds Delade delar Generationsspecifikt
SR-IOV som stöds PF på värden, VF till den virtuella maskinen Validera drivrutinens livscykel

Konfigurera minsta behörighet och uppdateringskontroll

Ge containrar på värden endast renderingsenheten och nödvändiga gruppbehörigheter, inte bred privilegierad åtkomst. Installera drivrutinen som matchar den virtualiserade funktionen i den virtuella maskinen och behåll programvarurendering som reserv för underhåll.

Lås fungerande kombinationer av kärna och drivrutin tills nästa uppdatering har klarat ett labbtest. Experimentella SR-IOV-moduler kan sluta fungera efter kärn- eller firmwareuppdateringar, så dokumentera steg för borttagning och återställning.

ZimaSpaces översikt över ZimaCubes grafikprocessorsexpansion ger maskinvarukontext.

En oberoende guide till delning av grafikprocessor i homelab beskriver full genomkoppling, medierade enheter och SR-IOV.

-15% OFF
Single board computer zimaboard2

Testa igen efter omstart och samtidig belastning

Kallstarta värden, starta containrarna först och därefter den virtuella maskinen; upprepa i omvänd ordning. Båda vägarna ska återhämta sig utan manuell omkoppling av drivrutinen.

Kör den verkliga samtidiga arbetsbelastningen tillräckligt länge för att avslöja termisk strypning och återställningsfel. Starta sedan om den virtuella maskinen utan att starta om värden och bekräfta att containrarna behåller accelerationen.

Fortsätt endast när den exakta plattformen stöder ett delningsläge och klarar tester med samtidig belastning och omstart. Avbryt om värden förlorar sin renderingsnod, den virtuella maskinen inte kan återställas eller lösningen är beroende av en övergiven drivrutin som du inte kan låsa på ett säkert sätt.

Support och tips

Mer att läsa

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.