Ja, mehrere Mediencontainer können sich eine GPU teilen, wenn Host-Treiber und Laufzeitumgebung den gleichzeitigen Zugriff unterstützen und jeder Container korrekt Zugriff auf das Gerät erhält.
Container besitzen eine GPU normalerweise nicht exklusiv, wie es bei einer vollständig durchgereichten virtuellen Maschine der Fall ist. Intel Quick Sync und AMD VA-API stellen üblicherweise gemeinsam nutzbare Rendergeräte bereit, während NVIDIA-Container denselben Treiber-Stack und dieselbe GPU gemeinsam nutzen können, vorbehaltlich der Hardware-, Treiber-, Codec-, Speicher- und Sitzungslimits. Konflikte entstehen, wenn die Orchestrierung das Gerät exklusiv zuweist, Berechtigungen abweichen, Container inkompatible Bibliotheken enthalten oder gleichzeitige Transkodierungen die praktische Kapazität der GPU überschreiten.
Bestätigen, dass der Host gleichzeitige GPU-Workloads unterstützt
Installieren und überprüfen Sie zuerst den Host-Treiber und führen Sie anschließend eine hardwarebeschleunigte Transkodierung außerhalb oder innerhalb eines bekannten funktionierenden Containers aus. Notieren Sie GPU-Modell, Treiber, unterstützte Kodierungs- und Dekodierungs-Codecs, Speicher und die beobachtete Auslastung.
Eine Diskussion in der TrueNAS-Community berichtet, dass mehrere Apps dieselbe GPU nutzen können, wenn diese zur Verwendung bereitgestellt und nicht als exklusive Anwendungsressource zugewiesen wird. Der Unterschied liegt zwischen gemeinsamem Gerätezugriff und exklusiver Passthrough-Zuweisung.
Wenn ein Container die GPU nicht zuverlässig verwenden kann, fügen Sie keinen weiteren hinzu. Beheben Sie zuerst Probleme mit Host-Treiber, Kernel-Gerät, Firmware oder Laufzeitumgebung, bevor Sie den Parallelbetrieb testen.
Das richtige Gerät für jeden Container bereitstellen
Vergleichen Sie bei Intel und AMD die an jeden Container weitergereichten /dev/dri-Karten- und Render-Nodes. Vergleichen Sie bei NVIDIA die Laufzeitumgebung oder Geräteanforderung, Variablen für sichtbare Geräte und die Treiberfunktionen.
Ein Jellyfin-Fall unter NixOS beschreibt, dass sich dieselbe Host-GPU in verschiedenen Containern unterschiedlich verhielt, weil sich Betriebssystem- und Geräteumgebung geändert hatten. Er zeigt, warum übereinstimmende Gerätebereitstellung und Bibliotheken wichtiger sind als das Kopieren einer einzelnen Compose-Zeile.
Verwenden Sie nur den Gerätesatz, den die jeweilige App benötigt, und vermeiden Sie den privilegierten Modus als Abkürzung. Bestätigen Sie nach einem Neuaufbau, dass der erwartete Render-Node oder das erwartete NVIDIA-Gerät in jedem Container sichtbar ist.
Berechtigungen und Benutzergruppen containerübergreifend angleichen
Ermitteln Sie Besitzer und Gruppe des Render-Geräts auf dem Host anhand ihrer numerischen IDs und bestätigen Sie anschließend, dass der Prozess in jedem Container über die entsprechende zusätzliche Gruppe oder Berechtigung verfügt. Bildspezifische Benutzernamen können auf unterschiedliche numerische IDs abgebildet werden.
Ein Container, der die GPU auflistet, sie aber nicht öffnen kann, wechselt möglicherweise auf Software-Transkodierung oder meldet „Berechtigung verweigert“. Dieser Fehler kann wie ein Gerätekonflikt aussehen, während der andere Mediencontainer weiterhin funktioniert.
Testen Sie jeden Container einzeln mit derselben Datei und demselben Codec. Halten Sie Berechtigungsanpassungen explizit in Compose fest, damit sie durch Image-Aktualisierungen und Neuerstellungen nicht entfernt werden.
Codec-, Treiber- und Laufzeitkompatibilität prüfen
Vergleichen Sie die Codecs und Filter, deren Ausführung jede App von der GPU anfordert, einschließlich H.264, HEVC, AV1, Tonemapping, Untertiteln, Skalierung sowie OpenCL- oder CUDA-Filtern. Ein Workload kann Funktionen erfordern, die ein anderer nie verwendet.
Ein aktueller Leitfaden zur GPU-Passthrough-Konfiguration für Jellyfin betont, dass die Containerkonfiguration zu Intel QSV, NVIDIA NVENC oder AMD VA-API passen muss, anstatt alle Hardwarebeschleunigungspfade als austauschbar zu betrachten. Die Laufzeitumgebung muss zur GPU-Familie passen.
Halten Sie den Host-Treiber mit den Bibliotheken der Container-Laufzeitumgebung kompatibel und vermeiden Sie widersprüchliche Treiber in einzelnen Mediencontainern. Testen Sie Dekodierung, Kodierung und Tonemapping getrennt.
Gleichzeitige Sitzungen, Speicher- und Temperaturgrenzen messen
Starten Sie in jedem Container eine Hardware-Transkodierung und überwachen Sie GPU-Prozesse, Auslastung, Encoder- und Decoder-Last, Speicher, Temperatur, Fehler und Stream-Stabilität. Erhöhen Sie die Anzahl gleichzeitiger Sitzungen schrittweise und verwenden Sie repräsentative Medien.
Eine Konfiguration in der Proxmox-Community beschreibt mehrere Jellyfin-Instanzen, die gleichzeitig transkodieren, und bestätigt die Aktivität auf dem Host. Sie zeigt außerdem, dass gleichzeitige Sitzungen praktische Grenzen haben, die durch Hard- und Software festgelegt werden.
Eine gemeinsam genutzte GPU funktioniert, wenn beide Apps weiterhin beschleunigt und reaktionsfähig bleiben. Ruckler, fehlgeschlagene Encoder-Erstellung, Speicherfehler, thermische Zurücksetzungen oder der Wechsel einer App zur Softwareverarbeitung, wodurch die andere beeinträchtigt wird, weisen darauf hin, dass der Workload den aktuellen Spielraum überschreitet.
Getrennte Konfigurations- und Transkodierungspfade bei gemeinsam genutzter GPU beibehalten
Geben Sie jedem Mediencontainer eine eigene Konfigurationsdatenbank, einen eigenen Cache, ein eigenes Transkodierungsverzeichnis, eigene Ports und eine eigene Identität. Teilen Sie nur die schreibgeschützte Medienbibliothek und das GPU-Gerät, sofern die Anwendungen nicht ausdrücklich ein gemeinsames Zustandsverzeichnis unterstützen.
Der ZimaSpace-Leitfaden zum Isolieren von Containerabhängigkeiten hilft dabei, einen GPU-Konflikt von einem Datenbank-, Cache-, Netzwerk- oder Mount-Fehler zu unterscheiden.
Die Konfiguration ist erst dann validiert, wenn beide Container Neuerstellungen überstehen, gleichzeitig Hardwarebeschleunigung nutzen, ihre eigenen Berechtigungen und Zustände einhalten und innerhalb der Sitzungs-, Speicher- und Temperaturgrenzen bleiben. Verwenden Sie separate GPUs oder eine Softwareausweichlösung, wenn gleichzeitige Workloads die erforderliche Qualität nicht zuverlässig erfüllen können.
Support & Tipps
Mehr zum Lesen

Kann Plex eine GPU mit einem anderen Docker-Container gemeinsam nutzen?
Plex und ein weiterer Container können häufig auf dieselbe GPU zugreifen, aber du musst die Treiberunterstützung, die Gerätezuordnung, die Auslastung der Video-Engine, den Speicher...

So erkennst du, ob ein Plex-Fehler vom Client oder vom Server verursacht wird
Reproduziere dasselbe Element auf einem anderen Client, vergleiche den Sitzungspfad und sammle Serverbelege erst, nachdem der Geltungsbereich dir gezeigt hat, wo der Fehler tatsächlich...

So konfigurierst du den Plex-Cache und den temporären Transcodierungs-Speicher
Schütze den persistenten Plex-Zustand, indem du temporäre Transcodierungsdateien auf geeignetem lokalem Speicher ablegst, und überprüfe anschließend die Bereinigung, den freien Speicherplatz und das Verhalten...

