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

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

本人就职于国际知名终端厂商,负责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推向极限可能会导致不稳定或损坏。



在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第436题寻找右区间

题目: 题解: func findRightInterval(intervals [][]int) []int {n : len(intervals)type pair struct{ x, i int }starts : make([]pair, n)ends : make([]pair, n)for i, p : range intervals {starts[i] pair{p[0], i}ends[i] pair{p[1], i}}sort.…

面向人工智能: 对红酒数据集进行分析 (实验四)

由于直接提供截图是不切实际的,我将详细解释如何使用scikit-learn(通常称为sk-learn)自带的红酒数据集进行葡萄酒数据的分析与处理。这包括实验要求的分析、数据的初步分析(完整性和重复性)以及特征之间的关联关系分析…

MATLAB绘图基础9:多变量图形绘制

参考书:《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。 9.多变量图形绘制 9.1 气泡图 气泡图用于展示三个或更多变量变量之间的关系,气泡图的组成要素: 横轴( X {\rm X} X轴):表示数据集中的一个变量&#xff0c…

双端搭建个人博客

1. 准备工作 确保你的两个虚拟机都安装了以下软件: 虚拟机1(Web服务器): Apache2, PHP虚拟机2(数据库服务器): MariaDB2. 安装步骤 虚拟机1(Web服务器) 安装Apache2和PHP 更新系统包列表: sudo apt update安装Apache2: sudo apt install apache2 -y安装PHP及其Apac…

只写CURD后台管理的Java后端要如何提升自己

你是否工作3~5年后,发现日常只做了CURD的简单代码。 你是否每次面试就会头疼,自己写的代码,除了日常CURD简历上毫无亮点可写 抱怨过苦恼过也后悔过,但是站在现在的时间点回想以前,发现有很多事情我们是可以做的更好的。…

Spring之生成Bean

Bean的生命周期:实例化->属性填充->初始化->销毁 核心入口方法:finishBeanFactoryInitialization-->preInstantiateSingletons DefaultListableBeanFactory#preInstantiateSingletons用于实例化非懒加载的bean。 1.preInstantiateSinglet…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-26

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-26 1. LLMs Still Can’t Plan; Can LRMs? A Preliminary Evaluation of OpenAI’s o1 on PlanBench Authors: Karthik Valmeekam, Kaya Stechly, Subbarao Kambhampati LLMs仍然无法规划;LRMs可以…

Mybatis的基本使用

什么是Mybatis? Mybatis是一个简化JDBC的持久层框架,MyBatis是一个半自动化框架,是因为它在SQL执行过程中只提供了基本的SQL执行功能,而没有像Hibernate那样将所有的ORM操作都自动化了。在MyBatis中,需要手动编写SQL语…

【Android】布局优化—include,merge,ViewStub的使用方法

引言 1.重要性 在Android应用开发中,布局是用户界面的基础。一个高效的布局不仅能提升用户体验,还能显著改善应用的性能。随着应用功能的复杂性增加,布局的优化变得尤为重要。优化布局能够减少渲染时间,提高响应速度&#xff0c…

Docker安装consul + go使用consul + consul知识

1. 什么是服务注册和发现 假如这个产品已经在线上运行,有一天运营想搞一场促销活动,那么我们相对应的【用户服务】可能就要新开启三个微服务实例来支撑这场促销活动。而与此同时,作为苦逼程序员的你就只有手动去 API gateway 中添加新增的这…

探索分布式IO模块的介质冗余:赋能工业自动化的稳健之心

在日新月异的工业自动化领域,每一个细微环节的稳定性都直接关系到生产线的效率与安全。随着智能制造的深入发展,分布式IO(Input/Output)模块作为连接现场设备与控制系统的关键桥梁,其重要性日益凸显。我们自主研发的带…

五子棋双人对战项目(3)——匹配模块

一、分析需求 二、约定前后端接口 三、实现游戏大厅页面(前端代码) 四、实现后端代码 五、线程安全问题 六、忙等问题 一、分析需求 需求:多个玩家,在游戏大厅进行匹配,系统会把实力相近的玩家匹配到一起。 要想实…

Redis 简单的消息队列

使用redis 进行简单的队列很容易,不需要使用较为复杂的MQ队列,直接使用redis 进行,不过唯一不足的需要自己构造生产者消费者,这里使用while True的方法进行消费者操作 目录 介绍数据类型StringHash 重要命令消息队列 介绍 key-v…

钉钉H5微应用Springboot+Vue开发分享

文章目录 说明技术路线注意操作步骤思路图 一、创建钉钉应用二、创建java项目三、创建vue项目(或uniapp项目),npm引入sdk的依赖四、拥有公网域名端口。开发环境可以使用(贝锐花生壳等工具)五、打开钉钉开发者平台&…

Selenium与数据库结合:数据爬取与存储的技术实践

目录 一、Selenium与数据库结合的基础概念 1.1 Selenium简介 1.2 数据库简介 1.3 Selenium与数据库结合的优势 二、Selenium爬取数据的基本步骤 2.1 环境准备 2.2 编写爬虫代码 2.3 数据提取 2.4 异常处理 三、数据存储到数据库 3.1 数据库连接 3.2 数据存储 3.3 …

软件设计师——计算机网络

📔个人主页📚:秋邱-CSDN博客☀️专属专栏✨:软考——软件设计师🏅往期回顾🏆:🌟其他专栏🌟:C语言_秋邱 一、OSI/ RM七层模型(⭐⭐⭐) ​ 层次 名称 主要功…

docker下载mysql时出现Unable to pull mysql:latest (HTTP code 500) server error 问题

报错 Unable to pull mysql:latest (HTTP code 500) server error - Get “https://registry-1.docker.io/v2/”: EOF 解决方法 将VPN开到Global模式 解决啦

Could not retrieve https://npm.taobao.org/mirrors/node/index.json. 报错解决

Could not retrieve https://npm.taobao.org/mirrors/node/index.json. 报错解决 1.问题原因及解约 今天使用nvm下载不同版本的nodejs的时候报错了 C:\Users\1> nvm list availableCould not retrieve https://npm.taobao.org/mirrors/node/index.json.提示无法检索地址&…

Oracle控制文件全部丢失如何使用RMAN智能恢复?

1.手动删除所有控制文件模拟故障产生 2.此时启动数据库发现控制文件丢失 3.登录rman 4.列出故障 list failure; 5.让RMAN列举恢复建议 advise failure; 6.使用RMAN智能修复 repair failure;

基于Springboot+Vue的基于协同过滤算法的个性化音乐推荐系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统中…