博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接

如何使用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

来获得查询参数的完整列表。在向查询添加额外参数时,确保查询选项之间没有空格。下面是一些常用的查询参数:

$ 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时钟

2.5 调整GPU功率

调整功率限制有助于平衡性能、能耗和发热量。首先,我们可以看到当前的功率限制:

$ 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推向极限可能会导致不稳定或损坏。



【NVIDIA】如何使用nvidia-smi命令管理和监控GPU-LMLPHP

10-01 18:33