理解nvidia-smi的日志含义

从一个例子开始

nvidia-smi

得到返回

Wed Dec 24 11:30:38 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.144.03             Driver Version: 550.144.03     CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 4090        Off |   00000000:1B:00.0 Off |                  Off |
| 30%   45C    P2             69W /  450W |   22273MiB /  24564MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   1  NVIDIA GeForce RTX 4090        Off |   00000000:1C:00.0 Off |                  Off |
| 30%   44C    P2             93W /  450W |   20622MiB /  24564MiB |    100%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   2  NVIDIA GeForce RTX 4090        Off |   00000000:1D:00.0 Off |                  Off |
| 30%   48C    P0            106W /  450W |   20584MiB /  24564MiB |    100%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   3  NVIDIA GeForce RTX 4090        Off |   00000000:1E:00.0 Off |                  Off |
|ERR!   46C    P2            124W /  450W |   21833MiB /  24564MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   4  NVIDIA GeForce RTX 4090        Off |   00000000:3D:00.0 Off |                  Off |
| 30%   46C    P2            118W /  450W |    4171MiB /  24564MiB |     99%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   5  NVIDIA GeForce RTX 4090        Off |   00000000:3F:00.0 Off |                  Off |
| 30%   39C    P8             21W /  450W |    6934MiB /  24564MiB |     12%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   6  NVIDIA GeForce RTX 4090        Off |   00000000:40:00.0 Off |                  Off |
| 30%   44C    P2             85W /  450W |    2020MiB /  24564MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   7  NVIDIA GeForce RTX 4090        Off |   00000000:41:00.0 Off |                  Off |
| 30%   37C    P8             36W /  450W |   16478MiB /  24564MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A    118038      G   ...aries/Linux/CarlaUE4-Linux-Shipping          6MiB |
|    0   N/A  N/A   3088439      C   python                                         14MiB |
|    0   N/A  N/A   3101801      C   python                                         14MiB |
|    1   N/A  N/A   3505257      C   ...yi/anaconda3/envs/planr1/bin/python      20614MiB |
|    2   N/A  N/A   3505258      C   ...yi/anaconda3/envs/planr1/bin/python      20576MiB |
|    4   N/A  N/A   3462430      C   ray::wrapped_fn                               764MiB |
|    4   N/A  N/A   3462431      C   ray::wrapped_fn                               712MiB |
|    4   N/A  N/A   3462432      C   ray::wrapped_fn                               660MiB |
|    4   N/A  N/A   3462433      C   ray::wrapped_fn                               658MiB |
|    4   N/A  N/A   3462434      C   ray::wrapped_fn                               656MiB |
|    4   N/A  N/A   3462435      C   ray::wrapped_fn                               670MiB |
|    5   N/A  N/A    118038    C+G   ...aries/Linux/CarlaUE4-Linux-Shipping       6862MiB |
|    6   N/A  N/A    117893      C   python                                       2012MiB |
|    7   N/A  N/A     16286      C   python                                      16470MiB |
+-----------------------------------------------------------------------------------------+

nvidia-smi 到底在展示什么

一张标准的 nvidia-smi 输出可以分为三块:

  1. GPU 概览表(每张卡一行)
  2. Processes 表(每个 GPU 的进程)
  3. 驱动 / CUDA / GPU 状态信息

推荐的阅读顺序

Processes → GPU-Util → Memory-Usage → Type
因为Processes 表告诉你谁在用 GPU,跑了什么样的程序,占用的显存是多少

如何理解关键的Processes

以 GPU 0 为例

GPU 0:
PID 118038  Type G   CarlaUE4-Linux-Shipping   6MiB
PID 3088439 Type C   python                   14MiB
PID 3101801 Type C   python                   14MiB

PID:进程号
Type:
C = CUDA 计算进程
G = Graphics / OpenGL / GUI 进程
GPU Memory Usage:该进程能被 CUDA 追踪到的显存
【注意】
Processes 表 只显示 CUDA 可追踪的显存使用,并不代表 GPU 上的全部显存占用。

GPU-Util = 0%,但显存几乎占满?

GPU-Util 表示在最近一个采样窗口内,CUDA 核心是否在执行计算指令。
GPU-Util 不表示显存是否被占用,是否有 OpenGL context,GPU 是否“被锁死”
GPU-Util = 0% 并不等于 GPU 是“空的”。

显存占用的三大常见原因

1 OpenGL / GUI / EGL 上下文

当使用以下功能时:
GUI 渲染
OpenGL / EGL
游戏引擎(Carla、Unreal、Isaac、SAPIEN)
GPU 会分配大量资源用于:
Framebuffer
Texture
Depth buffer
Shader cache
这些显存:
不走 CUDA runtime
不会显示在 Processes 表
但会计入 Memory-Usage

2 驱动级 Context 未释放

在以下情况下:
GUI 渲染卡死
强制 kill 进程
watchdog soft lockup
OpenGL / CUDA context 可能未被干净释放,导致:
显存被 driver 标记为“仍占用”
但已经没有任何活跃进程
这类显存通常只能通过:
进程自然退出
GPU reset
驱动重载
才能释放。

3 引擎级显存预留(如 Carla / Unreal)

某些引擎会:
提前预留大块显存
用于后续 streaming / rendering
实际计算发生前 GPU-Util 仍为 0

posted @ 2025-12-24 11:52  asandstar  阅读(46)  评论(0)    收藏  举报