我有一台生产机器(Ubuntu 18.04),它使用 Nvidia 在 GPU 中运行进程。某个进程已分配内存,现在已停止运行,导致 GPU 基本无法使用。
ps -o ppid=-p
返回 1,这意味着 PID=1 是我的已停止进程的父进程,所以我无法终止它。
nvidia-smi 显示此进程在 GPU 中分配了大量内存。因此我认为我可以使用
nvidia-smi --gpu-reset
释放资源。子进程会产生什么问题吗?它能“看到”它分配的资源不再可用吗?
本质上:这是否危险?
答案1
使用 nvidia-smi --gpu-reset 将重置 GPU 并释放已停用进程所占用的所有分配资源(包括内存)。但是,此命令只能在 GPU 处于空闲状态时使用,这意味着没有其他活动进程正在使用 GPU。
如果您的 GPU 正在被其他活动进程使用,则 --gpu-reset 命令可能会失败或导致意外的副作用,例如终止这些进程或由于 GPU 资源突然丢失而导致它们发生故障。
由于已停用进程的父进程是 PID=1,因此不太可能产生任何进一步的麻烦。重置 GPU 时,它分配的资源将被释放,已停用进程将无法查看或使用它们。
只要没有其他进程正在使用 GPU,使用 nvidia-smi --gpu-reset 通常都是安全的。如果有其他进程正在使用 GPU,您应该尝试在重置 GPU 之前正常停止这些进程。此外,重置 GPU 后监控系统是个好主意,以确保不会出现意外问题。
如果机器冻结,你需要重新启动,这是很常见的,因为内核模块可能卡住了,甚至对终止使用 GPU 的进程也没有反应