必须用nvidia-smi查PID及显存详情,gpustat辅助多卡监控,/proc文件系统定位已删但仍驻留的进程:ls -l /proc/PID/exe判删除,cat /proc/PID/cmdline还原命令,ps查父进程追溯来源。

在麒麟OS上运行AI训练、视频渲染或深度学习推理任务时,若显存报错“Out of Memory”却找不到占用者,必须精准定位到具体进程PID及其显存分配详情,否则无法终止或优化异常任务。
使用nvidia-smi查看NVIDIA显卡的进程级显存占用
该命令是排查NVIDIA显卡显存归属最直接有效的方式,输出中“Processes”部分明确列出每个占用GPU内存的进程PID、类型、显存用量及完整命令路径。
1、打开终端,输入:nvidia-smi 并回车执行。
2、在输出结果底部找到“Processes”表格区域——【只有已安装NVIDIA官方驱动且GPU处于活跃状态时,此区域才非空】。
3、观察各列:PID列对应进程号;Type列标注C(计算型)或G(图形型);GPU Memory Usage列显示该进程独占的显存MB数;Command列给出启动该进程的完整命令,含路径与参数,可据此反向识别服务名或用户行为。
4、若需持续监控变化,用 nvidia-smi -l 1 每秒刷新一次,便于捕获瞬时峰值进程。
用gpustat快速汇总多GPU上的进程归属
当系统配备多块NVIDIA GPU(如A10/A800集群节点),gpustat能以紧凑表格形式同时呈现每张卡的显存使用率、温度、功耗,并在末尾标注各进程所属用户名,适合运维巡检。
方法一:安装并运行基础监控
1、执行 pip3 install gpustat 安装工具(需Python3.6+及pip3可用)。
2、运行 gpustat -i 2,每2秒刷新一次,输出中“User”列即为占用该GPU显存的登录用户,结合PID可快速锁定归属账户。
方法二:过滤特定用户进程
若只关心当前登录用户的GPU占用,加 --no-header 和 grep $USER 组合:gpustat | grep $USER,立即筛出本户所有显存占用行。
通过/proc文件系统精确定位被删除但仍驻留显存的进程
某些场景下,进程已执行 rm -f 删除自身可执行文件,但仍在运行并持续占用显存,此时nvidia-smi中的Command列会显示“
第一步:从nvidia-smi中记下可疑PID(例如12345)
第二步:检查该进程是否已删除主程序文件:ls -l /proc/12345/exe
第三步:若输出末尾含“ (deleted)”,说明可执行文件已被删;此时执行:cat /proc/12345/cmdline | tr '\0' ' ',可还原原始启动命令(含参数),比Command列更可靠。
第四步:若需追溯该进程启动时间与父进程,运行:ps -o pid,ppid,lstart,cmd -p 12345,其中PPID可向上追踪至systemd或用户shell,确认是否为误启的遗留任务。

















