Sim, vários contentores de multimédia podem partilhar uma GPU quando o controlador e o runtime do anfitrião suportam acesso simultâneo e cada contentor recebe o dispositivo corretamente.
Normalmente, os contentores não ficam com a posse exclusiva de uma GPU, ao contrário do que acontece com uma máquina virtual com passthrough completo. O Intel Quick Sync e o AMD VA-API expõem habitualmente dispositivos de renderização partilhados, enquanto os contentores NVIDIA podem partilhar a mesma pilha de controladores e GPU, sujeitos aos limites de hardware, controladores, codecs, memória e sessões. Os conflitos surgem quando a orquestração atribui o dispositivo de forma exclusiva, as permissões são diferentes, os contentores incluem bibliotecas incompatíveis ou as transcodificações simultâneas excedem a capacidade prática da GPU.
Confirme que o anfitrião suporta cargas de trabalho simultâneas na GPU
Instale e verifique primeiro o controlador do anfitrião e, em seguida, execute uma transcodificação com aceleração de hardware fora de um contentor ou dentro de um contentor conhecido por funcionar corretamente. Registe o modelo da GPU, o controlador, os codecs de codificação e descodificação suportados, a memória e a utilização observada.
Uma discussão na comunidade TrueNAS relata que várias aplicações podem partilhar a mesma GPU quando esta é exposta para utilização, em vez de ser atribuída como um recurso exclusivo da aplicação. A distinção está entre acesso partilhado ao dispositivo e passthrough exclusivo.
Se um contentor não conseguir utilizar a GPU de forma fiável, não adicione outro. Corrija o controlador do anfitrião, o dispositivo do kernel, o firmware ou o runtime antes de testar a simultaneidade.
Exponha o dispositivo correto a todos os contentores
Para Intel e AMD, compare os nós de dispositivo card e render de /dev/dri transmitidos para cada contentor. Para NVIDIA, compare o runtime ou o pedido de dispositivo, as variáveis de dispositivos visíveis e as capacidades do controlador.
Um caso de Jellyfin no NixOS descreve a mesma GPU do anfitrião a comportar-se de forma diferente entre contentores porque o sistema operativo e o ambiente do dispositivo foram alterados. Isto demonstra por que motivo a correspondência entre a exposição do dispositivo e as bibliotecas é mais importante do que copiar uma linha do Compose.
Utilize o conjunto mínimo de dispositivos de que cada aplicação necessita e evite o modo privilegiado como solução rápida. Depois de recriar cada contentor, confirme que o nó de renderização ou dispositivo NVIDIA esperado aparece no seu interior.
Faça corresponder as permissões e os grupos de utilizadores entre os contentores
Registe o proprietário e o grupo numéricos do dispositivo de renderização no anfitrião e, em seguida, confirme que o processo de cada contentor tem o grupo suplementar ou a permissão correspondente. Os nomes de utilizador específicos da imagem podem ser associados a IDs numéricos diferentes.
Um contentor que apresente a GPU mas não consiga abri-la pode recorrer à transcodificação por software ou apresentar um erro de permissão negada. Esta falha pode parecer um conflito de dispositivo quando o outro contentor de multimédia continua a funcionar.
Teste cada contentor isoladamente com o mesmo ficheiro e codec. Mantenha as correções de permissões explícitas no Compose para que as atualizações e recriações da imagem não as removam.
Verifique a compatibilidade entre codecs, controlador e runtime
Compare os codecs e filtros que cada aplicação solicita à GPU, incluindo H.264, HEVC, AV1, mapeamento de tons, legendas, dimensionamento e filtros OpenCL ou CUDA. Uma carga de trabalho pode exigir capacidades que outra nunca utiliza.
Um guia atual sobre passthrough de GPU para Jellyfin salienta a importância de fazer corresponder a configuração do contentor ao Intel QSV, NVIDIA NVENC ou AMD VA-API, em vez de tratar todos os métodos de aceleração de hardware como equivalentes. O runtime tem de corresponder à família da GPU.
Mantenha o controlador do anfitrião compatível com as bibliotecas do runtime do contentor e evite incluir controladores incompatíveis dentro de contentores de multimédia individuais. Teste separadamente a descodificação, a codificação e o mapeamento de tons.
Meça as sessões simultâneas, os limites de memória e de temperatura
Inicie uma transcodificação por hardware em cada contentor e monitorize os processos da GPU, a utilização, a carga do codificador e descodificador, a memória, a temperatura, os erros e a estabilidade do fluxo. Aumente gradualmente a simultaneidade utilizando conteúdos representativos.
Uma configuração da comunidade Proxmox descreve várias instâncias do Jellyfin a transcodificarem em simultâneo e a verificar a atividade no anfitrião. Também demonstra que as sessões simultâneas têm limites práticos definidos pelo hardware e pelo software.
Uma GPU partilhada está a funcionar quando ambas as aplicações continuam aceleradas e responsivas. Interrupções, falhas na criação do codificador, erros de memória insuficiente, reinícios térmicos ou uma aplicação obrigar a outra a utilizar software indicam que a carga de trabalho excede a margem disponível.
Mantenha configurações e caminhos de transcodificação separados enquanto partilha a GPU
Dê a cada contentor de multimédia a sua própria base de dados de configuração, cache, diretório de transcodificação, portas e identidade. Partilhe apenas a biblioteca de multimédia em modo só de leitura e o dispositivo GPU, a menos que as aplicações suportem explicitamente um diretório de estado comum.
O guia da ZimaSpace sobre o isolamento de dependências entre contentores ajuda a distinguir um conflito de GPU de uma falha da base de dados, da cache, da rede ou de uma montagem.
O design só é validado quando ambos os contentores sobrevivem a recriações, utilizam aceleração de hardware em simultâneo, respeitam as suas próprias permissões e estados e permanecem dentro dos limites de sessões, memória e temperatura. Utilize GPUs separadas ou recorra ao software quando as cargas de trabalho simultâneas não conseguirem cumprir de forma fiável a qualidade necessária.
Suporte e Dicas
Mais para Ler

O Plex pode partilhar uma GPU com outro contentor Docker?
O Plex e outro contentor conseguem frequentemente aceder à mesma GPU, mas é necessário testar o suporte dos controladores, o mapeamento de dispositivos, a...

Como saber se um erro do Plex vem do cliente ou do servidor
Reproduza o mesmo item noutro cliente, compare o percurso da sessão e, em seguida, recolha provas do servidor apenas depois de o âmbito lhe...

Como configurar a cache do Plex e o armazenamento temporário de transcodificação
Proteja o estado persistente do Plex enquanto coloca os ficheiros temporários de transcodificação num armazenamento local adequado e, em seguida, verifique a limpeza, o...

