Tenho uma máquina de produção (Ubuntu 18.04) que roda 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 esse processo tem 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? Ele pode "ver" que os recursos que alocou não estão mais disponíveis?
Em essência: isso é perigoso de alguma forma?
O uso de nvidia-smi --gpu-reset redefinirá a GPU e liberará todos os recursos alocados, incluindo memória, mantidos pelo processo extinto. No entanto, esse comando só pode ser usado quando a GPU estiver 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 pode falhar ou causar efeitos colaterais indesejados, 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.
Em geral, é seguro usar nvidia-smi --gpu-reset, desde que não haja outros processos usando a GPU ativamente. Se houver outros processos usando a GPU, tente interromper esses processos normalmente antes de redefinir a GPU. Além disso, é uma boa ideia monitorar seu sistema após redefinir a GPU para garantir que nenhum problema inesperado ocorra.
É bastante comum que você precise reiniciar a máquina se travar, pois provavelmente o módulo do kernel trava e não responde nem mesmo para matar processos que estão usando GPU