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

news2024/11/20 8:26:19

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

本人就职于国际知名终端厂商,负责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 或者 nameGPU的正式产品名称。这是一个字母数字字符串。适用于所有产品
gpu_bus_id 或者 pci.bus_idPCI总线ID,格式为“domain🚌device.function”,十六进制
vbios_versionGPU板卡的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.totalGPU内存总数
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推向极限可能会导致不稳定或损坏。



在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2182987.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KPConv: Flexible and Deformable Convolution for Point Clouds

Abstract Kernel Point Convolution(KPConv)是一种点云卷积方法,它可以直接在点云数据上进行操作,无需任何中间的表示形式。方法的核心在于使用核点来定义卷积权重,核点位于欧几里得空间中,并仅对靠近它们…

Spring DI 笔记

目录 1.什么是DI? 2.依赖注入的三种⽅式 2.1属性注⼊ 2.2构造⽅法注⼊ 2.3Setter 注⼊ 2.4三种注⼊优缺点分析 3.Autowired存在问题 1.什么是DI? DI: 依赖注⼊ 依赖注⼊是⼀个过程,是指IoC容器在创建Bean时, 去提供运⾏时所依赖的资源,⽽资源指的…

(JAVA)浅尝关于 “栈” 数据结构

1. 栈的概述: 1.1 生活中的栈 存储货物或供旅客住宿的地方,可引申为仓库、中转站。例如酒店,在古时候叫客栈,是供旅客休息的地方,旅客可以进客栈休息,休息完毕后就离开客栈 1.2计算机中的栈 将生活中的…

第1 章 第一节:基础语法

第1 章 第一节:基础语法 1.1书写规则 1.1.1关键字 在Java语言中,已经定义好的,具有一定的功能和作用的英文单词。所有的关键字都是小写的 在Java中总共有51个关键字,还有两个保留字const\goto. 常见的关键字: if…

User-Agent在WebMagic爬虫中的重要性

对于需要从网站上抓取数据的开发者来说,WebMagic是一个强大的工具。它是一个简单灵活的Java爬虫框架,用于抓取网页数据。在爬虫技术中,User-Agent(用户代理)是一个关键的HTTP请求头,它告诉服务器关于客户端…

中九无科研无竞赛保研经验帖——上交软院、中科大计算机、复旦工程硕、南大工程硕、浙大软件

本人bg: 学校:中九软件工程rk:夏令营5%,预推免3%(都是写的预估排名)六级:480, 四级:540科研:无竞赛:美赛M,以及水赛国三、省二若干 保研前期没有…

jenkins项目发布基础

随着软件开发需求及复杂度的不断提高,团队开发成员之间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。Jenkins 自动化部署可以解决集成、测试、部署等重复性的工作,工具集成的效率明显高于人工操作;并且持续集成可以更早的获取代码变更的信息,…

向日葵远程控制怎么下载?推荐4个远程控制工具网站。

从官网下载的软件质量有保障,安全性和可信度也比较好。所以不管需要使用什么样的软件,最好是到官网下载。如果是有远程控制的需求,我可以推荐几个安全可靠的网站给大家。 1、向日葵远程控制大师 直达链接:https://dow…

【STM32单片机_(HAL库)】4-3【定时器TIM】定时器输出PWM实现呼吸灯实验

1.硬件 STM32单片机最小系统LED灯模块 2.软件 pwm驱动文件添加定时器HAL驱动层文件添加GPIO常用函数定时器输出PWM配置步骤main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "pwm.h"int main(void) {HA…

运用循环单链表实现约瑟夫问题

代码&#xff1a; #include <iostream> using namespace std; struct node {int id;node *next; }; int len0; //存现在链表的长度int main() {node*head,*temp,*tail;headnew node;head->next head;tailhead;int A,B;cin>>A>>B;lenA;int num1;while…

unity一键注释日志和反注释日志

开发背景&#xff1a;游戏中日志也是很大的开销&#xff0c;虽然有些日志不打印但是毕竟有字符串的开销&#xff0c;甚至有字符串拼接的开销&#xff0c;有些还有装箱和拆箱的开销&#xff0c;比如Debug.Log(1) 这种 因此需要注释掉&#xff0c;当然还需要提供反注释的功能&am…

数据结构-链表笔记

移除节点 203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListN…

windows上安装mingw教程及mingw64国内下载地址汇总

​ 首先进去官方官网地址&#xff1a;https://www.mingw-w64.org&#xff0c;注意如果下载不了或者下载慢可以使用下面提供国内下载地址&#xff0c;可以满速下载。 进入官网后&#xff0c;直接在左侧点击Downloads即可。 点击Sources选项   点击Downloads后&#xff0c;在右…

qfluentwidgets组件库的配置与使用

文章目录 前言一、安装1 安装conda环境2 配置designer和pyuic3 查看是否成功二、简单使用前言 这篇博客用来记录qfluentwidgets组件库的基本使用。 如果你愿意花200块钱去官网github地址买一份作者的组件库,添加到了designer中了。那么本博客前面的所有配置对你都是没有用的,…

Chromium 用户数据目录User Data 初始化过程c++

一、先说结论 User Data 路径优先级如下&#xff1a; 1、注册表中策略配置的路径。 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Chromium UserDataDir"xx_path" 2、命令行中的路径。 --user-data-dir"xx_path" 3、默认用户路径 %LOCALAPPDATA%/Chrom…

在使用visual studio 2022,运行程序时弹窗:“ 此任务要求应用程序具有提升的权限“

系列文章目录 文章目录 系列文章目录前言一、问题原因二、解决方法1.第一种解决方法2.第二种解决方法 前言 在使用visual studio 2022&#xff0c;运行程序时弹窗&#xff1a;" 此任务要求应用程序具有提升的权限"&#xff0c;每次都要再次点击“使用其他凭证重新启…

【LeetCode HOT 100】详细题解之二叉树篇

【LeetCode HOT 100】详细题解之二叉树篇 94 二叉树的中序遍历方法一&#xff1a;递归方法二&#xff1a;迭代 104 二叉树的最大深度方法一&#xff1a;递归方法二&#xff1a;迭代 226 翻转二叉树方法一&#xff1a;递归方法二&#xff1a;迭代 101 对称二叉树方法一&#xff…

麦克斯韦方程组的独立方程与辅助方程

第四个方程可以由第一个方程得到。注意哈密顿算符求散度是对空间求偏导&#xff0c;也就是xyz&#xff0c;而麦克斯韦方程组中的矢量除了xyz还有t也是自变量。 方程1推出方程4&#xff08;用到求微分的换顺序&#xff09; 方程2推出方程3&#xff0c;用到电流面密度和电荷体密…

python调用opencv报错“module ‘cv2‘ has no attribute ‘namedWindow‘”

之前电脑上使用pip install安装过opencv相关的python模块&#xff0c;不过后续学习opencv时主要使用OpenCVSharp在VS2022中创建项目测试。今天学习过程中突然想用python试试&#xff0c;不过运行下面代码时报错“module ‘cv2’ has no attribute namedWindow”。 import cv2c…

单调队列与单调栈<2>——单调栈

单调栈的定义 单调递增栈 栈中元素从栈底到栈顶是递增的。 单调递减栈 栈中元素从栈底到栈顶是递减的。 单调栈的核心内容 我们从左到右遍历元素&#xff0c;构造单调栈&#xff08;从栈顶到栈底递增或减&#xff09;&#xff1a;在 i 从左往右遍历的过程中&#xff0c;我…