nvidia-smi 是 NVIDIA System Management Interface 的缩写,主要用于管理和监控 NVIDIA GPU(图形处理单元)。该工具提供了有关 GPU 使用情况、驱动版本、显存使用等信息的详细报告。它广泛用于服务器、工作站和高性能计算(HPC)环境中,特别是在使用 CUDA 或进行深度学习时。

1. 基本命令

1.1. 显示所有 GPU 信息

nvidia-smi

该命令将显示当前机器上所有 NVIDIA GPU 的详细状态,包括:

  • GPU 使用率(利用率)
  • 显存使用情况
  • 驱动版本
  • 显卡型号
  • 进程列表等

输出示例:

Tue Aug 31 14:42:25 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.89       Driver Version: 460.89       CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap| Memory-Usage | GPU-Util  Compute M. | Pstate |
|===============================+======================+======================|
|   0  Tesla K80            Off  | 00000000:00:1E.0 Off |                    0 |
| N/A   33C    P8    29W / 149W |     0MiB / 11441MiB |      0%      Default |
+-----------------------------------------------------------------------------+

主要字段说明:

  • GPU:GPU 编号
  • Name:GPU 的名称
  • Driver Version:当前驱动版本
  • CUDA Version:支持的 CUDA 版本
  • Fan:GPU 风扇的转速(百分比)
  • Temp:GPU 当前温度
  • Pwr: Usage/Cap:当前功率使用情况和最大功率容量
  • Memory-Usage:显存的使用情况
  • GPU-Util:GPU 当前的利用率
  • Compute M.:GPU 是否处于计算模式
  • Pstate:当前 GPU 的性能状态

1.2. 查看 GPU 进程

nvidia-smi pmon -c 1

该命令显示当前 GPU 上运行的进程。它会列出所有在 GPU 上运行的进程,包括进程的 PID(进程 ID)、使用的显存、GPU 使用率等。

输出示例:

    GPU   GI   CI        PID   Type   Process name                  GPU-Util  Compute  Memory-Usage
    ================================================================================
    GPU    0   N/A      1234      C   python                          55%      Default   250MiB

1.3. 查看 GPU 驱动和 CUDA 版本

nvidia-smi --query-gpu=driver_version,cuda_version --format=csv

该命令显示当前安装的 NVIDIA 驱动版本 和 CUDA 版本

输出示例:

driver_version, cuda_version
460.89, 11.2

1.4. 显示 GPU 详细状态

nvidia-smi -q

此命令将显示更详细的 GPU 状态信息,包括内存、温度、功率等。

输出示例:

==============NVSMI LOG==============

Timestamp                           : Tue Aug 31 15:06:30 2021
Driver Version                      : 460.89
CUDA Version                        : 11.2
...
GPU 00000000:00:1E.0
    Product Name                    : Tesla K80
    GPU UUID                         : GPU-d5ad4088-fac4-6976-57ea-bd695e58fe9c
    ...
    Memory Usage
        Total                       : 11441 MiB
        Used                        : 0 MiB
        Free                        : 11441 MiB
    ...

2. 进阶命令

2.1. 设置 GPU 的性能状态(P-State)

nvidia-smi 允许设置 GPU 的性能状态,帮助用户调节 GPU 性能和功耗。

nvidia-smi -pm 1    # 启用持久模式
nvidia-smi -pm 0    # 禁用持久模式

持久模式(Persistence Mode):启用持久模式后,GPU 不会在没有活动时被关闭,从而减少 GPU 启动时间。


2.2. 设置 GPU 的功率限制

nvidia-smi -i 0 -pl 150

该命令允许你设置指定 GPU(例如 GPU 0)的功率限制为 150W。功率限制对提高效率和防止过热非常有帮助。


2.3. 显示特定 GPU 的信息

nvidia-smi -i 0

此命令仅显示 GPU 0 的信息。


2.4. GPU 显存查询

nvidia-smi --query-gpu=memory.total,memory.free,memory.used --format=csv

此命令查询 GPU 显存的总量、已用显存和空闲显存。

输出示例:

memory.total, memory.free, memory.used
11441 MiB, 11441 MiB, 0 MiB

2.5. 设置 GPU 的计算模式

nvidia-smi -c 3

设置 GPU 的计算模式为 独占模式,即允许一个进程使用 GPU。该模式有助于防止多个进程共享 GPU,适用于一些需要大规模 GPU 资源的任务。


3. 持续监控 GPU 状态

3.1. 每秒更新 GPU 状态

nvidia-smi -l 1

该命令会每秒刷新一次 GPU 的状态信息,适合用来监控 GPU 的实时状态。


3.2. 显示 GPU 资源的详细信息并实时更新

nvidia-smi --loop=2

该命令每 2 秒更新一次 GPU 的详细信息,包括显存使用情况、GPU 使用率等。


4. 其他常用选项

4.1. 帮助命令

nvidia-smi --help

如果你想了解更多 nvidia-smi 命令的选项和功能,可以使用 --help 参数查看帮助文档。


5. 总结

nvidia-smi 是一个强大的工具,用于管理和监控 NVIDIA GPU。通过它,你可以:

  • 查看 GPU 的使用状态、显存和温度。
  • 管理 GPU 的性能状态、功率限制等。
  • 持续监控 GPU 使用情况。

对于使用 深度学习 或 高性能计算 的用户,nvidia-smi 是一个不可或缺的工具。