GPU系列(五)-nvidia-smi 基本使用

发布于:2024-05-03 ⋅ 阅读:(147) ⋅ 点赞:(0)

1 什么是 nvidia-smi?

nvidia-smi 全称是 NVIDIA System Management Interface,是 NVIDIA 提供的管理和监控 GPU 的接口。

nvidia-smi 调用的是 NVML。NVML 全称是 NVIDIA Management Library,提供了一组 C API,用于 NVIDIA GPU 监控和管理的库。

1.1 可查询的状态

  • ECC 错误计数
  • GPU 利用率
  • 活动计算进程
  • 时钟和 PState
  • 温度和风扇速度
  • 电源管理
  • 硬件识别

1.2 可修改的状态

  • ECC 模式
  • ECC 复位
  • 计算模式
  • 持久模式

2 nvidia-smi 字段含义

nvidia-smi

+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.129.03             Driver Version: 535.129.03   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| 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 A100-SXM4-80GB          On  | 00000000:27:00.0 Off |                    0 |
| N/A   32C    P0              65W / 400W |      4MiB / 81920MiB |      0%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   1  NVIDIA A100-SXM4-80GB          On  | 00000000:2A:00.0 Off |                    0 |
| N/A   29C    P0              63W / 400W |      4MiB / 81920MiB |      0%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   2  NVIDIA A100-SXM4-80GB          On  | 00000000:51:00.0 Off |                    0 |
| N/A   31C    P0              74W / 400W |  34221MiB / 81920MiB |      0%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   3  NVIDIA A100-SXM4-80GB          On  | 00000000:57:00.0 Off |                    0 |
| N/A   33C    P0              66W / 400W |      4MiB / 81920MiB |      0%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   4  NVIDIA A100-SXM4-80GB          On  | 00000000:9E:00.0 Off |                    0 |
| N/A   31C    P0              60W / 400W |      4MiB / 81920MiB |      0%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   5  NVIDIA A100-SXM4-80GB          On  | 00000000:A4:00.0 Off |                    0 |
| N/A   29C    P0              62W / 400W |      4MiB / 81920MiB |      0%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   6  NVIDIA A100-SXM4-80GB          On  | 00000000:C7:00.0 Off |                    0 |
| N/A   28C    P0              64W / 400W |      4MiB / 81920MiB |      0%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   7  NVIDIA A100-SXM4-80GB          On  | 00000000:CA:00.0 Off |                    0 |
| N/A   33C    P0              92W / 400W |      7MiB / 81920MiB |     72%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    2   N/A  N/A   3085965      C   /home/xxx/.conda/envs/chat/bin/python     34208MiB |
+---------------------------------------------------------------------------------------+
字段 说明
NVIDIA-SMI nvidia-smi 的版本号
Driver Version 驱动版本号
CUDA Version CUDA 版本号
GPU GPU 卡序号
GPU Name GPU 的名称和内存容量
Persistence-M 持久模式是否启用。On 表示启用, Off 表示关闭。启用时 GPU 将保持最大性能状态
Bus-Id GPU 所在的 PCIe 总线地址
Disp.A 显示器是否连接到 GPU 的输出端口。On 表示连接,Off 表示没有连接
Volatile Uncorr. ECC 未 corrected 错误的易失性 ECC 内存错误计数。用于检测内存错误
Fan 风扇速度, N/A 表示没有风扇或风扇速度读数
Temp GPU 温度
Perf 性能状态。P0 是最大性能状态, P8 是最小性能状态
Pwr Usage/Cap: 当前功耗和功耗上限
Memory-Usage 已用 GPU 显存/总 GPU 显存
GPU-Util GPU 利用率
Compute M. 计算模式。Default 是默认模式
MIG M. MIG(Multi-Instance GPU) 模式, 将一个物理 GPU 分成多个独立、隔离的实例。Disabled 表示未启用
字段 说明
GPU GPU 设备的 ID
GI Global ID, 针对多 GPU 系统, 一个进程所有的 cuda context 的统一 ID
CI Compute Instance ID, 属于同一个 GPU 进程内, 区分不同 cuda context 的 ID
PID 进程 ID
Type 进程类型, C 表示 CUDA 进程, G 表示 Graphics 进程
Process name 进程名称
GPU Memory Usage 该进程当前在 GPU 上占用的内存大小

3 常用参数

-l:定时刷新状态

每隔 5 秒刷新一次

nvidia-smi -l 5

-L:查看显卡型号

nvidia-smi -L

GPU 0: NVIDIA A100-SXM4-80GB (UUID: GPU-x-8bff-5236-2111-x)
GPU 1: NVIDIA A100-SXM4-80GB (UUID: GPU-x-2a64-20a8-8c5b-x)
...

-q:查看 GPU 的状态详情

-i 参数指定 GPU 序号

如果不指定,默认查询全部。

nvidia-smi -q -i 0

==============NVSMI LOG==============
Driver Version                            : 535.129.03
CUDA Version                              : 12.2

Attached GPUs                             : 8
GPU 00000000:27:00.0
    Product Name                          : NVIDIA A100-SXM4-80GB
    Product Brand                         : NVIDIA
    Product Architecture                  : Ampere
    Display Mode                          : Enabled
    Display Active                        : Disabled
    Persistence Mode                      : Enabled
    Addressing Mode                       : None
    MIG Mode
        Current                           : Disabled
        Pending                           : Disabled
-x:查询信息输出为 XML 格式
nvidia-smi -q -i 0 -x
<?xml version="1.0" ?>
<!DOCTYPE nvidia_smi_log SYSTEM "nvsmi_device_v12.dtd">
<nvidia_smi_log>
	<driver_version>535.129.03</driver_version>
	<cuda_version>12.2</cuda_version>
	<attached_gpus>8</attached_gpus>
  ...
</nvidia_smi_log>
-d SUPPORTED_CLOCKS 查看 GPU 的时钟频率 

通过 -i 参数指定 GPU 序号,如果不指定,则默认查询全部 GPU 的时钟频率。

nvidia-smi -q -d SUPPORTED_CLOCKS -i 0

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

Timestamp                                 : Thu Feb  1 14:33:03 2024
Driver Version                            : 535.129.03
CUDA Version                              : 12.2

Attached GPUs                             : 8
GPU 00000000:27:00.0
    Supported Clocks
        Memory                            : 1593 MHz
            Graphics                      : 1410 MHz
            Graphics                      : 1395 MHz
            Graphics                      : 1380 MHz
            Graphics                      : 1365 MHz
            Graphics                      : 1350 MHz
            Graphics                      : 1335 MHz
            Graphics                      : 1320 MHz

--query-gpu=gpu_name --format=csv 查询指定字段信息

--query-gpu 参数可以指定要查询的信息
--format 参数可以指定输出格式。
nvidia-smi --query-gpu=temperature.gpu,utilization.gpu,utilization.memory,memory.total --format=csv,noheader

32, 0 %, 0 %, 81920 MiB
30, 0 %, 0 %, 81920 MiB
31, 0 %, 0 %, 81920 MiB
49, 72 %, 47 %, 81920 MiB
31, 0 %, 0 %, 81920 MiB
28, 0 %, 0 %, 81920 MiB
28, 0 %, 0 %, 81920 MiB
30, 0 %, 0 %, 81920 MiB

4 常用子命令

nvidia-smi nvlink -s 查看 NVLink 网络状态

nvidia-smi nvlink -s

GPU 0: NVIDIA A100-SXM4-80GB (UUID: GPU-d604695a-8bff-5236-2111-59cae59c2a48)
	 Link 0: 25 GB/s
	 Link 1: 25 GB/s
	 Link 2: 25 GB/s
	 Link 3: 25 GB/s
	 Link 4: 25 GB/s
	 Link 5: 25 GB/s
	 Link 6: 25 GB/s
	 Link 7: 25 GB/s
	 Link 8: 25 GB/s
	 Link 9: 25 GB/s
	 Link 10: 25 GB/s
	 Link 11: 25 GB/s

nvidia-smi topo -m 查看连接拓扑

nvidia-smi topo -m

GPU0	GPU1	GPU2	GPU3	GPU4	GPU5	GPU6	GPU7	NIC0	CPU Affinity	NUMA Affinity	GPU NUMA ID
GPU0	 X 	NV12	NV12	NV12	NV12	NV12	NV12	NV12	SYS	0-31,64-95	0		N/A
GPU1	NV12	 X 	NV12	NV12	NV12	NV12	NV12	NV12	SYS	0-31,64-95	0		N/A
GPU2	NV12	NV12	 X 	NV12	NV12	NV12	NV12	NV12	SYS	0-31,64-95	0		N/A
GPU3	NV12	NV12	NV12	 X 	NV12	NV12	NV12	NV12	SYS	0-31,64-95	0		N/A
GPU4	NV12	NV12	NV12	NV12	 X 	NV12	NV12	NV12	SYS	32-63,96-127	1		N/A
GPU5	NV12	NV12	NV12	NV12	NV12	 X 	NV12	NV12	SYS	32-63,96-127	1		N/A
GPU6	NV12	NV12	NV12	NV12	NV12	NV12	 X 	NV12	SYS	32-63,96-127	1		N/A
GPU7	NV12	NV12	NV12	NV12	NV12	NV12	NV12	 X 	SYS	32-63,96-127	1		N/A
NIC0	SYS	SYS	SYS	SYS	SYS	SYS	SYS	SYS	 X

Legend:

  X    = Self
  SYS  = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
  NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
  PHB  = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
  PXB  = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge)
  PIX  = Connection traversing at most a single PCIe bridge
  NV#  = Connection traversing a bonded set of # NVLinks

NIC Legend:

  NIC0: mlx5_bond_0

NV12 表示有 12 根 NVLink,以每个 25 GB/s 的速率计算,这里 GPU 与 GPU 之间的互联速度达 300 GB/s。

5 常用配置命令

开启持久模式

已经被 nvidia-persistenced 守护进程替代。

可以通过 -i 参数指定 GPU 序号。

nvidia-smi -pm 1

持久模式 persistence mode,即在没有应用使用 GPU 时,驱动也处于加载状态。

持久模式比较耗电,但如果有短生命周期的任务,使用持久模式能够缩短 GPU 程序的启动延时。

开启 ECC 模式,重启生效

可以通过 -i 参数指定 GPU 序号。

nvidia-smi -e 1

如果关闭,使用 -e 0,需要重启才能生效。

需要注意的是开启 ECC 之后,虽然能够避免内存错误,但是会损失 15-25% 的性能,同时显存也会减少一部分。

设置计算模式

一共有三种计算模式:

  • 0/Default 多个进程共享,会有竞争和等待
  • 2/Prohibited 禁用显卡
  • 3/Exclusive 进程独占。
nvidia-smi -c 0

6 常见异常处理

容器中执行 nvidia-smi 报错

错误信息:

CUDA initialization: Unexpected error from cudaGetDeviceCount(). Did you run some cuda functions before calling NumCudaDevices() that might have already set an error? Error 36: API call is not supported in the installed CUDA driver

解决方式:

设置环境变量:

LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/lib/x86_64-linux-gnu:/usr/local/nvidia/lib

原因

容器中的 cuda 版本比较旧,cuda.so 匹配不上驱动,通过上面的 LD_LIBRARY_PATH 环境变量绕过旧版本的驱动。


网站公告

今日签到

点亮在社区的每一天
去签到