报错是这么冒出来的。一台 A10 机器 nvidia-smi 显示显存占用 22GB,下方进程列表却是空的,重启容器后依旧,新起的推理进程直接报 out of memory。
中间走过弯路,把「MIG 实例划分后统计口径与整卡不同」当成主因,改完现象没变。
原因不止一个,得分开看。上一个进程异常退出未释放显存,驱动侧未回收。少数情况下是GPU 被其他命名空间的容器占用,当前用户看不到进程。
不容易想到的是,ECC 或 XID 错误后显存进入不可用状态。
先列出所有进程包括其他用户
nvidia-smi --query-compute-apps=pid,used_memory --format=csv
随后检查是否有残留进程持有设备句柄
nvidia-smi -q -d MEMORY,PIDS
接着清理残留后复位设备
nvidia-smi --gpu-reset -i 0
等前面都确认过,再确认显存回到空闲值
nvidia-smi --query-gpu=memory.used,memory.total --format=csv
怎么算真的好了,看的是同一批现象。复位后显存占用降到 300MB 左右,新进程能正常加载模型,进程列表与实际占用一致。
容易忽略的是,进程列表为空但显存占满,多半是别的容器或异常退出的进程,复位前先确认没有在线任务在用这张卡。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
