Kan Plex een GPU delen met een andere Docker-container?

Eva Wong is de Technisch Schrijver en en vaste knutselaar bij ZimaSpace. Een levenslange geek met een passie voor homelabs en open-source software, zij is gespecialiseerd in het vertalen van complexe technische concepten naar toegankelijke, praktische handleidingen. Eva gelooft dat zelf-hosting leuk moet zijn, niet intimiderend. Met haar tutorials stelt ze de community in staat om hardware-setup te ontrafelen, van het bouwen van hun eerste NAS tot het beheersen van Docker-containers.

Ja, Plex kan vaak een GPU delen met een andere Docker-container, maar door hetzelfde apparaat aan beide containers bloot te stellen, wordt de prestaties voor geen van beide werklasten gereserveerd of gegarandeerd.

De keuze hangt af van de GPU, Linux-driver, container-runtime, het type werklast en de manier waarop elke toepassing video-engines, rekenkracht en geheugen gebruikt. Intel-geïntegreerde grafische chips worden vaak beschikbaar gemaakt via Linux-apparaatknooppunten zoals /dev/dri, terwijl NVIDIA-containers de NVIDIA-container-runtime of Docker GPU-reserveringen gebruiken. Configureer eerst de toegang, voer Plex en de tweede werklast daarna gelijktijdig uit en controleer of Plex onder de belasting die voor jou relevant is nog steeds hardwaretranscodering gebruikt.

Bevestig eerst dat Plex de GPU zelfstandig kan gebruiken

Voer voordat je het delen test één geforceerde Plex-transcodering uit terwijl de andere GPU-werklast is gestopt. Plex moet hardwareversnelling voor de stream melden en de host moet de verwachte video-engine- of GPU-activiteit tonen. Als Plex het apparaat alleen al niet kan gebruiken, maakt een extra container de diagnose alleen maar onduidelijker.

In de handleiding voor hardwareversnelde streaming van Plex staat dat Docker-implementaties het relevante kernelapparaat aan de container moeten blootstellen voor hardwareversnelling. Gebruik de huidige methode voor jouw platform in plaats van ervan uit te gaan dat een GPU die door de host wordt gedetecteerd automatisch zichtbaar is in Plex.

Noteer de starttijd van de transcodering, het CPU-gebruik, het GPU-/video-enginegebruik en de afspeelstabiliteit als nulmeting. Zo krijg je een controlemeting voor de deeltest. Zonder een goede nulmeting kun je niet vaststellen of latere problemen door concurrentie of door de oorspronkelijke GPU-configuratie van Plex worden veroorzaakt.

Stel hetzelfde apparaat doelbewust beschikbaar aan de tweede container

Voor NVIDIA kan Docker Compose GPU's per aantal of apparaat-ID reserveren voor een service. Als twee services zo zijn geconfigureerd dat ze dezelfde GPU zien, kan de runtime dat apparaat aan beide blootstellen; dit is toegangsbeheer, geen contract voor exclusieve prestaties. Bij Intel of andere Linux-apparaten kunnen beide containers toegang krijgen tot hetzelfde relevante apparaatknooppunt wanneer de driver gelijktijdig gebruik toestaat.

De documentatie over GPU-ondersteuning in Compose laat zien hoe services GPU-toegang aanvragen en specifieke apparaat-ID's selecteren. Gebruik een specifiek apparaat als je meerdere GPU's hebt, zodat Plex tijdens het testen niet ongemerkt tussen apparaten wisselt.

Controleer de machtigingen na elke recreatie van een container of wijziging van een app-sjabloon. Dat een tweede container werkt, bewijst niet dat Plex nog steeds toegang tot het apparaat heeft, en een Plex-instelling waarin hardwareversnelling is ingeschakeld, bewijst niet dat de actieve stream deze ook gebruikt.

Test beide werklasten samen en let op de eerste hulpbron die verzadigd raakt

Start de tweede werklast op een representatief niveau en forceer vervolgens dezelfde Plex-transcodering als bij de nulmeting. Vergelijk de afspeelstabiliteit, transcodeersnelheid, GPU-geheugen, benutting van de video-engine en eventuele terugval naar de CPU. Als Plex pas overschakelt van hardware naar software of begint te bufferen wanneer de andere werklast actief is, heb je te maken met concurrentie en niet met een onverklaarbaar compatibiliteitsprobleem.

De ZimaSpace-gids voor GPU-controles vooraf raadt aan niet alleen de apparaatherkenning te controleren, maar ook de containertoegang en of opslag, back-ups en mediataken responsief blijven onder de gecombineerde werklast. Die systeembrede test is vooral belangrijk op een NAS waarop Plex niet de enige relevante service is.

Als de werklasten verschillende GPU-engines gebruiken, kan delen goed werken; als beide concurreren om dezelfde video-encodeer-/decodeer-engines, hetzelfde geheugen of dezelfde stroom- en thermische marge, kunnen de prestaties sterk afnemen. Ga er niet van uit dat een lage algemene ‘GPU-percentagescore’ betekent dat de specifieke video-engine die Plex nodig heeft beschikbaar is.

-15% OFF
Single board computer zimaboard2

Bepaal wanneer delen niet langer een goede oplossing is

Behoud de gedeelde configuratie als Plex hardwaremodus blijft gebruiken, de tweede container zijn doel haalt en de NAS responsief blijft onder de gecombineerde belasting. Herhaal de test na een herstart van Plex en nadat de tweede container opnieuw is gestart, zodat apparaattoewijzingen en machtigingen normale levenscyclusgebeurtenissen overleven.

Als concurrentie slechts af en toe voorkomt, plan de zware tweede werklast dan buiten de piekuren voor streaming of stel limieten op applicatieniveau in. Als beide werklasten gelijktijdig hun volledige capaciteit nodig hebben en de ene de andere consequent verdringt, wijs dan een tweede accelerator toe of verplaats één werklast naar een andere host in plaats van kwetsbare prioriteitsaanpassingen te blijven proberen.

Schakel over op probleemoplossing rond de driver of runtime wanneer een van beide containers de GPU verliest, zelfs als de andere is gestopt. Een deelprobleem moet pas worden onderzocht nadat beide toepassingen afzonderlijk toegang tot het apparaat hebben en de fout specifiek bij gelijktijdig gebruik optreedt.

Ondersteuning & Tips

Meer om te lezen

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.