博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接
本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。
博客内容主要围绕:
5G/6G协议讲解
算力网络讲解(云计算,边缘计算,端计算)
高级C语言讲解
Rust语言讲解
文章目录
- 如何使用nvidia-smi命令管理和监控GPU
- 一、nvidia-smi 有什么用?
- 1.1 检测GPU性能
- 1.2 GPU硬件参数配置
- 1.3 GPU故障排除
- 二、nvidia-smi 使用介绍
- 2.1 查看系统中所有的GPU资源
- 2.2 查询GPU的详细信息
- 2.3 开启 Persistence 模式
- 2.4 调整GPU时钟
- 2.5 调整GPU功率
如何使用nvidia-smi命令管理和监控GPU
当前各行各业都离不开GPU的加持,随着6G的研究进展,未来6G会是一个技术大融合的系统,其中就包括算力网络、AI、通信感知等对算力需求比较大的服务。下面我们学习一下GPU的管理和监控方法。
一、nvidia-smi 有什么用?
nvidia-smi 提供了GPU技术参数、使用温度和电源管理的重要信息。
1.1 检测GPU性能
nvidia-smi 最重要的功能是实时监控GPU性能。这包括跟踪GPU利用率,它告诉我们系统当前使用了多少GPU计算能力。此外,它还监控内存使用情况,这是了解GPU的视频RAM(VRAM)应用程序占用多少空间的基本指标,这在工作负载管理和优化中至关重要。此外,nvidia-smi 提供实时温度读数,确保GPU在安全的热极限内运行。在涉及持续、密集使用GPU的场景中,这方面尤其重要,因为它有助于防止热节流并保持最佳性能。
1.2 GPU硬件参数配置
nvidia-smi 可以配置硬件参数,它允许我们查询各种GPU属性,如时钟速度、功耗和支持的特性。如果我们正在为特定任务优化系统,无论是在计算密集型工作负载中最大化性能,还是在长时间运行的任务中确保能效,这些信息都是至关重要的。此外,nvidia-smi 还提供了调整某些设置的能力,如功率限制和风扇速度,如果我们想根据特定要求或环境条件对硬件进行微调,则nvidia-smi 为我们提供了一定程度的控制能力。
1.3 GPU故障排除
在解决GPU问题时,nvidia-smi 是一个宝贵的资产。它提供了对GPU状态的详细解释,这对诊断这些问题至关重要。例如,如果GPU表现不佳,nvidia-smi 可以帮助我们识别问题是否与过热、内存使用过多或GPU使用瓶颈有关。该工具还可以通过报告GPU性能中的错误和不规则情况来帮助识别失败的硬件组件。
二、nvidia-smi 使用介绍
2.1 查看系统中所有的GPU资源
# -L or –list-gpus Option
$ nvidia-smi -L
GPU 0: NVIDIA GeForce RTX 3070 SUPER (UUID: GPU-fb087aea-1cd3-0524-4f53-1e58a5da7a3c)
它对于快速识别当前的GPU特别有用,特别是在具有多个GPU的系统中。
2.2 查询GPU的详细信息
例如,
$ nvidia-smi --query-gpu=gpu_name,gpu_bus_id,vbios_version --format=csv
name, pci.bus_id, vbios_version
NVIDIA GeForce RTX 2060 SUPER, 00000000:03:00.0, 90.06.44.80.98
您可以通过命令
nvidia-smi --help-query-gpu
来获得查询参数的完整列表。在向查询添加额外参数时,确保查询选项之间没有空格。下面是一些常用的查询参数:
查询参数 | 参数解释 |
---|---|
timestamp | 查询的时间戳,格式为“YYYY/MM/DD HH:MM:SS.msec” |
gpu_name 或者 name | GPU的正式产品名称。这是一个字母数字字符串。适用于所有产品 |
gpu_bus_id 或者 pci.bus_id | PCI总线ID,格式为“domain🚌device.function”,十六进制 |
vbios_version | GPU板卡的BIOS版本 |
driver_version | 安装的NVIDIA显示驱动程序的版本。这是一个字母数字字符串 |
pstate | 当前GPU的性能状态。取值范围为P0(最高性能)~ P12(最低性能) |
pcie.link.gen.max | 最大的PCI-E链路生成可能与此GPU和系统配置有关系。例如,如果GPU支持的PCIe生成高于系统支持的PCIe生成,则报告系统PCIe生成 |
pcie.link.gen.current | 当前PCI-E链路的生成。当GPU不使用时,这些可能会减少 |
temperature.gpu | 核心GPU温度,单位摄氏度 |
utilization.gpu | 在过去的采样周期内,GPU上一个或多个内核执行的时间百分比。根据产品的不同,取样时间可能在1秒到1/6秒之间 |
utilization.memory | 在过去的样本时间段内,全局(设备)内存被读取或写入的时间百分比。根据产品的不同,取样时间可能在1秒到1/6秒之间 |
memory.total | GPU内存总数 |
memory.free | 总空闲内存数 |
memory.used | 分配给活动上下文的总内存数 |
$ nvidia-smi --query-gpu=timestamp,name,pci.bus_id,driver_version,pstate,pcie.link.gen.max,pcie.link.gen.current,temperature.gpu,utilization.gpu,utilization.memory,memory.total,memory.free,memory.used --format=csv -l 5
timestamp, name, pci.bus_id, driver_version, pstate, pcie.link.gen.max, pcie.link.gen.current, temperature.gpu, utilization.gpu [%], utilization.memory [%], memory.total [MiB], memory.free [MiB], memory.used [MiB]
2024/01/31 07:52:12.927, NVIDIA GeForce RTX 2060 SUPER, 00000000:03:00.0, 525.78.01, P0, 3, 3, 35, 0 %, 0 %, 8192 MiB, 7974 MiB, 0 MiB
2024/01/31 07:52:17.929, NVIDIA GeForce RTX 2060 SUPER, 00000000:03:00.0, 525.78.01, P0, 3, 3, 36, 0 %, 0 %, 8192 MiB, 7974 MiB, 0 MiB
2024/01/31 07:52:22.930, NVIDIA GeForce RTX 2060 SUPER, 00000000:03:00.0, 525.78.01, P0, 3, 3, 37, 0 %, 0 %, 8192 MiB, 7974 MiB, 0 MiB
2.3 开启 Persistence 模式
除非你为驱动程序开启了持久化模式(Persistence Mode,PM),否则以下任何关于时钟和电源的设置都会在程序运行之间重置。还要注意,如果启用PM模式,nvidia-smi 命令运行得更快。
$ nvidia-smi -pm 1
Enabled persistence mode for GPU 00000000:03:00.0.
All done.
上面的命令使时钟、电源和其他设置在程序运行、驱动程序调用时保持一致。
2.4 调整GPU时钟
命令 | 命令解释 |
---|---|
nvidia-smi -ac | 查看支持的时钟频率 |
nvidia-smi –q –d SUPPORTED_CLOCKS | 设置支持的时钟频率 |
nvidia-smi -q –d CLOCK | 查看当前的时钟 |
nvidia-smi --auto-boost-default=ENABLED -i 0 | 开启 boosting GPU 时钟(K80 以及之后的版本支持) |
nvidia-smi --rac | 重置为基本时钟频率 |
2.5 调整GPU功率
命令 | 命令解释 |
---|---|
nvidia-smi –pl N | 设置功率上限(GPU将使用的最大瓦数) |
nvidia-smi -pm 1 | 开启持久化模式 |
nvidia-smi stats -i -d pwrDraw | 提供对详细统计信息(如功率)的持续监控 |
nvidia-smi --query-gpu=index,timestamp,power.draw,clocks.sm,clocks.mem,clocks.gr --format=csv -l 1 | 连续提供时间戳、功率和时钟信息 |
调整功率限制有助于平衡性能、能耗和发热量。首先,我们可以看到当前的功率限制:
$ nvidia-smi -q -d POWER
==============NVSMI LOG==============
Timestamp : Wed Jan 31 08:58:41 2024
Driver Version : 525.78.01
CUDA Version : 12.0
Attached GPUs : 1
GPU 00000000:03:00.0
Power Readings
Power Management : Supported
Power Draw : 10.59 W
Power Limit : 175.00 W
Default Power Limit : 175.00 W
Enforced Power Limit : 175.00 W
Min Power Limit : 125.00 W
Max Power Limit : 175.00 W
Power Samples
Duration : 0.14 sec
Number of Samples : 8
Max : 28.37 W
Min : 10.30 W
Avg : 13.28 W
上面的命令显示当前功率使用情况和功率管理限制,现在让我们改变功率限制:
$ nvidia-smi -pl 150
Power limit for GPU 00000000:03:00.0 was set to 150.00 W from 175.00 W.
All done.
值得注意的是,最大和最小功率限制在不同的GPU模型之间是不同的。此外,在调整GPU设置,特别是功率限制时,我们必须谨慎使用超频。将GPU推向极限可能会导致不稳定或损坏。