Kann eine integrierte GPU zwischen einer VM und Host-Containern geteilt werden?

Eva Wong ist die Technische Redakteurin und und leidenschaftliche Tüftlerin bei ZimaSpace. Eine lebenslange Geek mit einer Leidenschaft für Homelabs und Open-Source-Software, sie spezialisiert sich darauf, komplexe technische Konzepte in zugängliche, praktische Anleitungenzu übersetzen. Eva ist der Meinung, dass Self-Hosting Spaß machen und nicht einschüchternd sein sollte. Durch ihre Tutorials befähigt sie die Community, Hardware-Setups zu entmystifizieren, vom Bau ihres ersten NAS bis hin zur Beherrschung von Docker-Containern.

Manchmal. Beim vollständigen PCI-Passthrough erhält die VM die gesamte integrierte GPU, sodass Host-Container normalerweise den Zugriff verlieren. Die gemeinsame Nutzung erfordert Hardware- und Treiberunterstützung für vermittelte Geräte, Intel GVT-g auf bestimmten älteren Plattformen oder SR-IOV-Virtual Functions auf unterstützten neueren Plattformen.

Der Containerzugriff ist eine separate Ebene: Container teilen sich normalerweise den Host-Kernel und verwenden Render-Geräte wie `/dev/dri/renderD128`. Eine VM benötigt eine virtualisierte GPU-Funktion oder ein vermitteltes Gerät statt dieses Host-Geräteknotens. Diese Unterscheidung bestimmt die sichere Konfiguration, die Validierungsmethode und den Wiederherstellungspunkt.

Ermitteln Sie den von Ihrer Plattform unterstützten Virtualisierungsmodus

Beginnen Sie mit der genauen CPU-Generation, der PCI-ID der iGPU, der Firmware, dem Host-Kernel und dem Treiber. Eine Anleitung für eine Intel-Generation muss nicht auf eine andere anwendbar sein, und einige Freigabemethoden wurden eingestellt oder erfordern Module außerhalb des Standard-Kernels.

Wenn nur vollständiges Passthrough unterstützt wird, wählen Sie entweder die VM oder den Host für die Beschleunigung. Erwarten Sie nicht, dass ein Host-Container Quick Sync behält, nachdem die Bindung des Host-Treibers aufgehoben wurde.

Wenn SR-IOV oder vermittelte Geräte unterstützt werden, belassen Sie die physische Funktion auf dem Host und weisen Sie der VM eine virtuelle Funktion oder ein mdev zu. Bestätigen Sie das Reset- und Treiberverhalten, bevor Sie die Konfiguration als produktionsbereit einstufen.

Verwenden Sie Kapazitäts- und Workload-Signale

Überprüfen Sie, ob der Host weiterhin einen Render-Knoten bereitstellt und die VM ihre zugewiesene virtuelle GPU erkennt. Führen Sie in beiden Umgebungen Hardware-Decodierung oder -Codierung aus, statt sich auf Geräteauflistungen zu verlassen.

Beobachten Sie während gleichzeitiger Transkodierungen die Auslastung der GPU-Engines, Fehler, den Speicherdruck und die Kernel-Protokolle. Gemeinsame Nutzung der Kapazität garantiert weder vorhersehbare Leistung noch Codec-Unterstützung.

Verwenden Sie die folgende Tabelle, um ein sicheres Betriebsmodell auszuwählen.

Beobachteter Zustand Bewertung Nächste Aktion
Vollständiges PCI-Passthrough Exklusive Nutzung durch die VM Host-Container verlieren die iGPU
Unterstütztes mdev/GVT-g Gemeinsam genutzte Teilbereiche Generationsspezifisch
Unterstütztes SR-IOV PF auf dem Host, VF für die VM Treiber-Lebenszyklus validieren

Konfigurieren Sie minimale Berechtigungen und kontrollierte Upgrades

Geben Sie Host-Containern nur das Render-Gerät und die erforderlichen Gruppenberechtigungen, keinen weitreichenden privilegierten Zugriff. Installieren Sie in der VM den zur virtualisierten Funktion passenden Treiber und halten Sie für Wartungsarbeiten eine Fallback-Lösung mit Software-Rendering bereit.

Fixieren Sie funktionierende Kombinationen aus Kernel und Treiber, bis das nächste Update einen Labortest besteht. Experimentelle SR-IOV-Module können nach Kernel- oder Firmware-Updates ausfallen. Dokumentieren Sie daher die Schritte zur Entfernung und Wiederherstellung.

Die Übersicht zur ZimaCube-GPU-Erweiterung von ZimaSpace bietet Hardwarekontext.

Ein unabhängiger Leitfaden zur GPU-Freigabe im Homelab beschreibt vollständiges Passthrough, vermittelte Geräte und SR-IOV.

-15% OFF

Nach einem Neustart und unter gleichzeitiger Last erneut testen

Führen Sie einen Kaltstart des Hosts durch, starten Sie zuerst die Container und anschließend die VM. Wiederholen Sie den Vorgang in umgekehrter Reihenfolge. Beide Pfade sollten ohne manuelles erneutes Binden des Treibers wiederhergestellt werden.

Führen Sie den realen gleichzeitigen Workload lange genug aus, um thermische Drosselung und Reset-Fehler sichtbar zu machen. Starten Sie anschließend die VM neu, ohne den Host neu zu starten, und bestätigen Sie, dass die Container ihre Beschleunigung behalten.

Fahren Sie nur fort, wenn die genaue Plattform einen Freigabemodus unterstützt und Tests unter gleichzeitiger Last sowie nach einem Neustart besteht. Brechen Sie ab, wenn der Host seinen Render-Knoten verliert, die VM nicht zurückgesetzt werden kann oder die Lösung von einem nicht mehr gepflegten Treiber abhängt, den Sie nicht sicher festsetzen können.

Support & Tipps

Mehr zum Lesen

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.