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