Plex può condividere una GPU con un altro container Docker?

Eva Wong è la Technical Writer e smanettatrice residente di ZimaSpace. Una geek da sempre con una passione per homelab e software open-source, si specializza nel tradurre concetti tecnici complessi in guide accessibili e pratiche. Eva crede che l'auto-ospitare debba essere divertente, non intimidatorio. Attraverso i suoi tutorial, dà potere alla comunità di demistificare le configurazioni hardware, dalla costruzione del loro primo NAS al dominio dei container Docker.

Sì, Plex può spesso condividere una GPU con un altro container Docker, ma esporre lo stesso dispositivo a entrambi i container non riserva né garantisce le prestazioni per nessuno dei due carichi di lavoro.

La decisione dipende dalla GPU, dal driver Linux, dal runtime dei container, dal tipo di carico di lavoro e dal modo in cui ciascuna applicazione utilizza i motori video, le risorse di calcolo e la memoria. La grafica integrata Intel viene comunemente esposta tramite nodi di dispositivo Linux come /dev/dri, mentre i container NVIDIA utilizzano il runtime per container NVIDIA o le prenotazioni GPU di Docker. Configura prima l’accesso, quindi esegui Plex e il secondo carico di lavoro insieme e verifica che Plex continui a eseguire la transcodifica hardware con il carico che ti interessa realmente.

Conferma prima che Plex possa usare la GPU da solo

Prima di testare la condivisione, esegui una transcodifica Plex forzata con l’altro carico di lavoro GPU arrestato. Plex dovrebbe indicare l’accelerazione hardware per lo streaming e l’host dovrebbe mostrare l’attività prevista del motore video o della GPU. Se Plex non riesce a usare il dispositivo da solo, aggiungere un altro container renderà soltanto più difficile la diagnosi.

La guida di Plex allo streaming con accelerazione hardware spiega che le distribuzioni Docker devono esporre al container il dispositivo kernel pertinente affinché l’accelerazione hardware funzioni. Usa il metodo attuale per il dispositivo della tua piattaforma invece di presumere che una GPU rilevata dall’host sia automaticamente visibile in Plex.

Registra il tempo di avvio della transcodifica di riferimento, l’utilizzo della CPU, l’utilizzo della GPU e del motore video e la stabilità della riproduzione. Otterrai così un risultato di controllo per il test di condivisione. Senza una base di riferimento pulita, non puoi determinare se gli errori successivi dipendano dalla contesa o dalla configurazione GPU originale di Plex.

Esponi deliberatamente lo stesso dispositivo al secondo container

Per NVIDIA, Docker Compose può riservare le GPU in base al numero o all’ID del dispositivo per un servizio. Se due servizi sono configurati per vedere la stessa GPU, il runtime può esporre quel dispositivo a entrambi; si tratta di controllo degli accessi, non di una garanzia di prestazioni esclusive. Per i dispositivi Intel o altri dispositivi Linux, entrambi i container possono ricevere l’accesso allo stesso nodo di dispositivo pertinente quando il driver consente l’utilizzo simultaneo.

La documentazione di Compose sul supporto GPU mostra come i servizi richiedono l’accesso alla GPU e come indirizzare ID specifici dei dispositivi. Usa un dispositivo specifico quando disponi di più GPU, così Plex non passerà silenziosamente da un dispositivo all’altro durante il test di condivisione.

Controlla le autorizzazioni dopo ogni ricreazione del container o modifica del modello dell’app. Il corretto funzionamento del secondo container non dimostra che Plex disponga ancora dell’accesso al dispositivo, e un’impostazione di Plex che mostra l’accelerazione hardware attiva non dimostra che lo streaming in corso la stia utilizzando.

Testa entrambi i carichi di lavoro insieme e osserva la prima risorsa che raggiunge la saturazione

Avvia il secondo carico di lavoro a un livello rappresentativo, quindi forza la stessa transcodifica Plex usata per il riferimento. Confronta la stabilità della riproduzione, la velocità di transcodifica, la memoria GPU, l’utilizzo del motore video e il ricorso alla CPU. Se Plex passa dalla modalità hardware a quella software o inizia a bufferizzare solo quando l’altro carico di lavoro è attivo, hai rilevato un problema di contesa, non un mistero di compatibilità.

La guida di preconfigurazione GPU di ZimaSpace consiglia di verificare non solo il rilevamento del dispositivo, ma anche l’accesso del container e il fatto che archiviazione, backup e attività multimediali rimangano reattivi con il carico combinato. Questo test dell’intero sistema è particolarmente importante su un NAS, dove Plex non è l’unico servizio rilevante.

Se i carichi di lavoro utilizzano motori GPU diversi, la condivisione può funzionare bene; se entrambi competono per gli stessi motori di codifica o decodifica video, per la memoria o per il margine energetico e termico, le prestazioni possono peggiorare drasticamente. Non presumere che una bassa percentuale complessiva di utilizzo della “GPU” significhi che lo specifico motore video necessario a Plex sia libero.

-15% OFF

Stabilisci quando la condivisione non è più una soluzione adatta

Mantieni la configurazione condivisa se Plex rimane in modalità hardware, il secondo container raggiunge il proprio obiettivo e il NAS resta reattivo con il carico combinato. Ripeti il test dopo un riavvio di Plex e dopo il riavvio del secondo container, così verifichi che le mappature dei dispositivi e le autorizzazioni sopravvivano ai normali eventi del ciclo di vita.

Se la contesa è occasionale, pianifica il carico di lavoro più pesante al di fuori degli orari di punta dello streaming oppure aggiungi limiti a livello applicativo. Se entrambi i carichi di lavoro devono funzionare contemporaneamente alla massima intensità e uno finisce costantemente per penalizzare l’altro, dedica un secondo acceleratore oppure sposta un carico di lavoro su un altro host invece di cercare di correggere il problema con impostazioni di priorità fragili.

Passa alla risoluzione dei problemi relativi al driver o al runtime quando uno dei due container perde la GPU anche con l’altro arrestato. Un problema di condivisione dovrebbe essere diagnosticato solo dopo che entrambe le applicazioni sono in grado di accedere al dispositivo in modo indipendente e l’errore si manifesta specificamente durante l’utilizzo simultaneo.

Supporto e consigli

Altro da leggere

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.