Tak, Plex często może współdzielić kartę graficzną z innym kontenerem Docker, ale udostępnienie tego samego urządzenia obu kontenerom nie rezerwuje ani nie gwarantuje wydajności dla żadnego z obciążeń.
Decyzja zależy od karty graficznej, sterownika Linuksa, środowiska uruchomieniowego kontenerów, rodzaju obciążenia oraz sposobu, w jaki każda aplikacja korzysta z silników wideo, obliczeń i pamięci. Zintegrowane układy graficzne Intela są zwykle udostępniane za pośrednictwem węzłów urządzeń Linuksa, takich jak /dev/dri, natomiast kontenery NVIDIA korzystają ze środowiska uruchomieniowego kontenerów NVIDIA lub rezerwacji GPU w Dockerze. Najpierw skonfiguruj dostęp, a następnie uruchom jednocześnie Plex i drugie obciążenie oraz sprawdź, czy Plex nadal korzysta ze sprzętowego transkodowania przy obciążeniu, które faktycznie Cię interesuje.
Najpierw potwierdź, że Plex samodzielnie może korzystać z GPU
Przed przetestowaniem współdzielenia uruchom jedno wymuszone transkodowanie w Plexie, zatrzymując drugie obciążenie GPU. Plex powinien zgłosić sprzętową akcelerację strumienia, a host powinien pokazać oczekiwaną aktywność silnika wideo lub GPU. Jeśli Plex nie może samodzielnie korzystać z urządzenia, dodanie kolejnego kontenera tylko utrudni diagnozę.
Przewodnik Plex dotyczący sprzętowo akcelerowanego przesyłania strumieniowego wyjaśnia, że wdrożenia Docker muszą udostępniać kontenerowi odpowiednie urządzenie jądra, aby możliwa była akceleracja sprzętowa. Korzystaj z aktualnej metody udostępniania urządzeń dla swojej platformy, zamiast zakładać, że GPU wykryte przez hosta będzie automatycznie widoczne w Plexie.
Zapisz bazowy czas rozpoczęcia transkodowania, użycie CPU, użycie GPU/silnika wideo oraz stabilność odtwarzania. Dzięki temu uzyskasz wynik kontrolny dla testu współdzielenia. Bez wiarygodnego punktu odniesienia nie da się stwierdzić, czy późniejsze problemy wynikają z rywalizacji o zasoby, czy z pierwotnej konfiguracji GPU w Plexie.
Celowo udostępnij to samo urządzenie drugiemu kontenerowi
W przypadku NVIDIA Docker Compose może rezerwować GPU według liczby urządzeń lub identyfikatora urządzenia. Jeśli oba usługi są skonfigurowane tak, aby widzieć ten sam układ GPU, środowisko uruchomieniowe może udostępnić to urządzenie obu kontenerom; jest to kontrola dostępu, a nie gwarancja wyłącznej wydajności. W przypadku urządzeń Intela lub innych urządzeń Linuksa oba kontenery mogą otrzymać dostęp do tego samego odpowiedniego węzła urządzenia, jeśli sterownik pozwala na równoczesne korzystanie.
Dokumentacja obsługi GPU w Compose firmy Docker pokazuje, jak usługi żądają dostępu do GPU i wskazują konkretne identyfikatory urządzeń. Jeśli masz wiele układów GPU, użyj konkretnego urządzenia, aby Plex nie przełączał się niepostrzeżenie między nimi podczas testu współdzielenia.
Po każdym ponownym utworzeniu kontenera lub wprowadzeniu zmian w szablonie aplikacji sprawdzaj uprawnienia. Działanie drugiego kontenera nie dowodzi, że Plex nadal ma dostęp do urządzenia, a ustawienie Plexa pokazujące włączoną akcelerację sprzętową nie dowodzi, że aktywny strumień faktycznie z niej korzysta.
Przetestuj oba obciążenia jednocześnie i obserwuj pierwszy zasób, który osiągnie nasycenie
Uruchom drugie obciążenie na reprezentatywnym poziomie, a następnie wymuś to samo transkodowanie Plex, którego użyto w teście bazowym. Porównaj stabilność odtwarzania, szybkość transkodowania, użycie pamięci GPU, wykorzystanie silnika wideo oraz ewentualne przejście na CPU. Jeśli Plex przełączy się ze sprzętowego na programowe przetwarzanie lub zacznie buforować dopiero wtedy, gdy aktywne jest drugie obciążenie, oznacza to rywalizację o zasoby, a nie tajemniczy problem ze zgodnością.
Przewodnik ZimaSpace dotyczący wstępnej kontroli GPU zaleca sprawdzenie nie tylko wykrywania urządzenia, lecz także dostępu kontenera oraz tego, czy pamięć masowa, kopie zapasowe i zadania multimedialne pozostają responsywne przy łącznym obciążeniu. Taki test całego systemu jest szczególnie ważny na serwerze NAS, gdzie Plex nie jest jedyną istotną usługą.
Jeśli obciążenia korzystają z różnych silników GPU, współdzielenie może działać bardzo dobrze. Jeśli oba rywalizują o te same silniki kodowania/dekodowania wideo, pamięć albo zapas mocy i możliwości chłodzenia, wydajność może gwałtownie spaść. Nie zakładaj, że niskie ogólne użycie „GPU procent” oznacza, że konkretny silnik wideo potrzebny Plexowi jest wolny.
Określ, kiedy współdzielenie przestaje być dobrym rozwiązaniem
Pozostaw konfigurację współdzieloną, jeśli Plex nadal działa w trybie sprzętowym, drugi kontener osiąga zakładany cel, a serwer NAS pozostaje responsywny przy łącznym obciążeniu. Powtórz test po ponownym uruchomieniu Plexa oraz po ponownym uruchomieniu drugiego kontenera, aby upewnić się, że mapowania urządzeń i uprawnienia przetrwają typowe cykle życia usług.
Jeśli rywalizacja o zasoby występuje sporadycznie, uruchamiaj wymagające drugie obciążenie poza godzinami szczytu odtwarzania lub zastosuj ograniczenia na poziomie aplikacji. Jeśli oba obciążenia muszą jednocześnie działać z pełną wydajnością, a jedno z nich stale pozbawia zasobów drugie, przeznacz drugi akcelerator dla jednego z zadań albo przenieś je na inny host, zamiast próbować stosować kruche korekty priorytetów.
Przejdź do diagnostyki sterownika lub środowiska uruchomieniowego, gdy którykolwiek z kontenerów traci dostęp do GPU nawet po zatrzymaniu drugiego. Problem ze współdzieleniem należy diagnozować dopiero wtedy, gdy obie aplikacje mogą niezależnie uzyskać dostęp do urządzenia, a awaria pojawia się konkretnie podczas równoczesnego użycia.
Wsparcie i wskazówki
Więcej do przeczytania

Jak ustalić, czy błąd Plex pochodzi od klienta, czy od serwera
Odtwórz ten sam przypadek na innym kliencie, porównaj ścieżkę sesji, a następnie zbierz dowody z serwera dopiero wtedy, gdy zakres analizy wskaże, gdzie faktycznie...

Jak skonfigurować pamięć podręczną Plex i tymczasową pamięć na transkodowane pliki
Chroń trwały stan Plex, umieszczając tymczasowe pliki transkodowania na odpowiedniej pamięci lokalnej, a następnie zweryfikuj czyszczenie, ilość wolnego miejsca i zachowanie podczas ponownego uruchamiania.

Jak wykonać kopię zapasową Plexa bez przechwytywania niespójnej bazy danych
Użyj kopii zapasowej bazy danych Plex do zapisania podstawowego stanu albo zatrzymaj Plex przed skopiowaniem całego drzewa danych aplikacji, a następnie przetestuj możliwość przywrócenia...

