文章目录
- 前言
- 1.重点概念解析
- 2.限制GPU显卡功率
前言
一个服务器遇到问题了,GPU Fan 和 Perf 两个都是err。之前没遇到这个问题,所以这次机会要搞搞清楚。每个参数都是在干事,能够收到哪些hint,如何查问题。
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
Fri Apr 14 16:52:54 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.63.01 Driver Version: 470.63.01 CUDA Version: 11.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 ... Off | 00000000:0B:00.0 Off | N/A |
|ERR! 52C P2 ERR! / 260W | 0MiB / 11019MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
表头释义:
Driver Version:显卡驱动版本号
CUDA Version:CUDA版本号
GPU Name:显卡名称
Persistence-M:是否支持持久性内存(Persistence-M是一种用于保存显卡驱动状态的特殊内存类型。如果启用了持久性内存,那么在显卡重启或掉电后,内存上的信息仍将保存下来。这种内存类型通常用于保存模型的长期数据,以便在不需要重新加载的情况下加速显卡操作。)
Bus-Id:显卡的总线ID(Bus-Id是显卡的总线ID,是该显卡在主板上的唯一标识。它是一个数字字符串,用于标识显卡在总线系统中的位置,方便系统识别和管理。每个显卡都有一个不同的总线ID,用于防止显卡混淆,以及为显卡提供管理和配置信息。)
Disp.A:显卡的显示状态(是否启用)(Disp.A是Display Active的缩写,表示是否有显示器激活,如果有显示器激活,则会显示Yes,否则显示No。显示器激活指的是在电脑系统中打开或使用外接的显示器,使其可以正常显示画面。)
Volatile Uncorr. ECC:是否启用显存错误校正(如果未启用则为0)(Volatile Uncorr. ECC——Volatile Uncorrectable Error Correction and Detection (VUECC):是一种可变不可修正的错误校验与纠正(ECC)技术,它旨在在计算机存储器中检测和纠正位错误。它使用了特殊的硬件来监控计算机内部数据,并在发现任何差错时通过可靠的方法自动纠正它们。)
Fan:风扇的速度(N/A表示不支持)
Temp:显卡的温度(单位为°C)
Perf:显卡性能状态(P0表示最高性能)(Performance是一种性能指标,用于衡量计算机系统的性能。它可以测量内存带宽、CPU时钟速度、GPU处理器指令集等。)
Pwr:Usage/Cap:显卡功耗使用情况/功耗容量(单位为W)(Power Usage/Capacity)
Memory-Usage:显存使用情况
GPU-Util:显卡利用率(Graphics Processor Unit Utilization)(Memory-Usage指的是设备内存占用情况,它表示当前系统正在使用的内存量。GPU-Util指的是图形处理器的利用率,这个数值表示GPU正在处理的任务的比例,以及它的性能。)
Compute M.:显卡计算模式(Compute M是一种用于测量GPU计算性能的衡量标准。它主要有三种类型:GFLOPS,TMUs和ROPs。GFLOPS代表每秒可以执行的浮点运算次数,TMU(纹理映射单元)可以每秒处理的纹理块数,而ROPs(渲染输出单元)可以每秒进行的像素写入操作次数。)(Default指的是GFLOPS,它用于衡量GPU的浮点计算能力。)
1.重点概念解析
Memory-Usage和Volatile GPU-Util是两个不一样的东西,显卡由GPU和显存等部分所构成,GPU相当于显卡上的CPU,显存相当于显卡上的内存。在跑任务的过程中可以通过优化代码来提高这两者的使用率。
Memory Usage:显存的使用率;
Volatile GPU-Util:浮动的GPU利用率;
Memory-Usage 和 GPU-Util 均是 nvidia-smi 命令中列出的 GPU 设备状态信息。
Memory-Usage(显存使用情况)表示已经分配给进程的显存数量,通常以 MiB 或 GB 为单位。这个值可以帮助我们了解当前GPU设备的内存使用情况,以及每个进程正在使用的内存量。如果显存使用率过高,可能会导致程序崩溃或性能下降。因此,在优化深度学习训练时,需要根据显存使用情况对模型大小、批次大小等超参数进行调整。
GPU-Util(GPU使用率)表示 GPU 核心部件的使用率,表示正在执行计算任务的时间占比。例如,如果 GPU-Util 的值为 50%,那么 GPU 核心部件在运行期间有一半的时间用于执行计算任务。这个值可以帮助我们了解 GPU 核心部件的负载情况,并确定是否存在性能瓶颈。当 GPU-Util 的值接近 100% 时,意味着 GPU 正在全力工作,而进一步提高性能的唯一方法就是使用更多的 GPU 设备或者优化算法。
如果要周期性的输出显卡的使用情况,可以用watch指令实现:
watch -n 10 nvidia-smi
nvidia-smi dmon
# gpu pwr gtemp mtemp sm mem enc dec mclk pclk
# Idx W C C % % % % MHz MHz
0 43 35 - 0 0 0 0 2505 1075
1 42 31 - 97 9 0 0 2505 1075
(in this example, one GPU is idle and one GPU has 97% of the CUDA sm "cores" in use
nvidia-smi dmon命令用于监视NVIDIA GPU设备上的显卡性能统计信息,包括功率、温度、GPU使用率和内存使用情况等。以下是nvidia-smi dmon命令输出的详细解释:
gpu:GPU设备的索引。
pwr:GPU芯片上电源使用功率(单位为瓦特,W)。
gtemp:GPU温度(Celsius,摄氏度)。
mtemp:内存温度(Celsius,摄氏度)。
sm:CUDA核心中正在使用的流多处理器(SM)百分比。
mem:显存使用率。
enc:编码器利用率。
dec:解码器利用率。
mclk:显存时钟速率(MHz)。
pclk:图形时钟速率(MHz)。
在以上示例中,我们看到有两个GPU设备(索引为0和1),每个设备都列出了功率、温度、流多处理器(SM)利用率、显存使用率和时钟速率等性能指标信息。
值得注意的是,这个命令只显示实时的性能数据,因此需要不断刷新才能查看最新数据。可以使用以下命令来持续刷新数据:
nvidia-smi dmon -s u -d 1
其中,“-s”参数表示刷新数据的时间间隔(单位为秒),“-d”参数表示在哪个GPU设备上监视数据。这样,就可以实时监视GPU设备的性能指标,并及时发现潜在问题。
2.限制GPU显卡功率
使用命令:
nvidia-smi -pm 1
nvidia-smi -pl 要限制的功率
未设置前:默认功率为最大功率,以2080Ti为例,功率为250W
设置后:最大功率限制在了100W
注意:如果系统重启后,限制设置就会失效,需要重新设置,或设置开机自动设置脚本
RTX2080用户手册:https://manuals.plus/wp-content/sideloads/nvidia-geforce-rtx-2080-graphics-card-manual-optimized.pdf
安装cuda官网指引:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#recommended-post