
我有一台生產機器(Ubuntu 18.04),它使用 Nvidia 在 GPU 中運行進程。某個進程已經分配了內存,但現在已經失效,導致 GPU 基本上無法使用。
ps -o ppid= -p
返回一個,這意味著 PID=1 是我已失效進程的父進程,所以我無法殺死它。
nvidia-smi 顯示該進程在 GPU 中分配了大量記憶體。所以我想我可以使用
nvidia-smi --gpu-重置
以釋放資源。子進程會產生任何麻煩嗎?它能否「看到」它所分配的資源不再可用?
本質上:這有什麼危險嗎?
答案1
使用 nvidia-smi --gpu-reset 將重設 GPU 並釋放任何已分配的資源,包括已失效進程所持有的記憶體。但是,此命令只能在 GPU 空閒時使用,這意味著沒有其他活動進程正在使用 GPU。
如果您的 GPU 正在被其他活動進程使用,則 --gpu-reset 命令可能會失敗或導致意外的副作用,例如終止這些進程或由於 GPU 資源突然遺失而導致它們發生故障。
由於已失效進程的父進程的 PID=1,因此不太可能產生任何進一步的麻煩。當您重置 GPU 時,它分配的資源將被釋放,並且失效的進程將無法看到或使用它們。
只要沒有其他進程主動使用 GPU,使用 nvidia-smi --gpu-reset 通常是安全的。如果還有其他進程正在使用 GPU,您應該在重置 GPU 之前嘗試正常停止這些進程。此外,最好在重置 GPU 後監視系統,以確保不會出現意外問題。
如果被凍結,您需要重新啟動機器,這是很常見的,因為核心模組可能會卡住,甚至無法回應殺死正在使用 GPU 的進程