
Tenho uma máquina de produção (Ubuntu 18.04) que executa processos em GPU usando Nvidia. Um determinado processo alocou memória e agora está extinto, deixando as GPUs basicamente inutilizáveis.
ps -o ppid = -p
Retorna um, o que significa que PID=1 é o pai do meu processo extinto, então não posso eliminá-lo.
nvidia-smi revela que este processo possui muita memória alocada nas GPUs. Então eu acho que posso usar
nvidia-smi --gpu-reset
para liberar os recursos. O processo filho vai gerar algum problema? Consegue "ver" que os recursos que atribuiu já não estão disponíveis?
Em essência: isso é perigoso de alguma forma?
Responder1
Usar nvidia-smi --gpu-reset redefinirá a GPU e liberará quaisquer recursos alocados, incluindo memória, mantidos pelo processo extinto. No entanto, este comando só pode ser usado quando a GPU está ociosa, o que significa que nenhum outro processo ativo está usando a GPU.
Se sua GPU estiver sendo usada por outros processos ativos, o comando --gpu-reset poderá falhar ou causar efeitos colaterais não intencionais, como encerrar esses processos ou causar mau funcionamento devido à perda repentina de recursos da GPU.
Como o pai do processo extinto é PID=1, é improvável que ele gere mais problemas. Ao redefinir a GPU, os recursos alocados serão liberados e o processo extinto não poderá vê-los ou usá-los.
Geralmente é seguro usar nvidia-smi --gpu-reset desde que não haja outros processos usando ativamente a GPU. Se houver outros processos usando a GPU, você deve tentar interrompê-los normalmente antes de redefinir a GPU. Além disso, é uma boa ideia monitorar seu sistema após redefinir a GPU para garantir que não surjam problemas inesperados.
É bastante comum que você precise reiniciar a máquina se ela travar, pois provavelmente o módulo do kernel trava e não responde nem mesmo ao matar processos que estão usando GPU