当前位置: 首页 > news >正文

了解你的GPU:深入探讨AMD SMI

Getting to Know Your GPU: A Deep Dive into AMD SMI — ROCm Blogs

2024年9月17日 作者:Matt Elliott
对于使用AMD硬件的系统管理员和高级用户来说,性能优化和高效的资源监控至关重要。AMD系统管理界面命令行工具`amd-smi`正是为了解决这些需求而设计的。
amd-smi是一个多功能的命令行工具,专门用于管理和监控AMD硬件,主要侧重于GPU。作为未来取代`rocm-smi`的工具,`amd-smi`有望成为跨广泛设备的AMD硬件管理的主要工具。对于那些新接触硬件管理或从其他工具转型的用户来说,`amd-smi`提供了一整套功能,帮助优化AMD硬件的使用。

在本博文中,我们将为您提供一个`amd-smi`的实用指南。逐步向您展示如何验证`amd-smi`的安装以及如何使用它的主要特点:访问您的AMD GPU的信息和指标,实时监控其性能和运行进程,配置其硬件参数,检查您的AMD GPU的拓扑和内存,等等。

理解系统管理界面

系统管理界面(SMIs)是现代硬件管理和监控的基础。这些界面作为API提供了一种标准化的方式与硬件组件交互。SMIs提供了对性能和状态的洞察,同时允许一定程度的控制。
用户通常通过命令行工具如`amd-smi`或编程库与SMIs交互,而不是直接操作API。这种模式使用户能够将硬件管理整合到自己的监控和自动化框架中,实现高效的资源利用和实时警报。
虽然功能可能因厂商和硬件类型而异,但SMIs的总体目标是一致的:为用户提供硬件的可见性和控制权。

amd-smi的主要功能

- 设备信息:快速获取AMD GPU的详细信息
- 性能监控:实时监控GPU的利用率、内存、温度和功耗
- 进程信息:识别使用GPU的进程
- 配置管理:调整GPU设置,如时钟频率和功耗限制
- 错误报告:监控和报告GPU错误,从而进行主动维护

开始使用amd-smi

在安装了AMD ROCm™的系统上,`amd-smi` 应该已经可用。可以运行以下命令来验证安装:

amd-smi version

如果未安装,可使用系统包管理器来安装`amd-smi-lib`。例如:
- 在Ubuntu上安装:sudo apt install amd-smi-lib
- 在RedHat企业Linux (RHEL) 上安装:sudo dnf install amd-smi-lib
- 在SUSE Linux企业服务器 (SLES) 上安装:sudo zypper install amd-smi-lib 

基本使用

以下是使用 amd-smi 的一些常用命令和提示。

列出所有 GPU

amd-smi list 命令会显示系统中所有 AMD GPU 的列表,以及如 ID、PCIe 总线地址和 UUID 等基本信息。

$ amd-smi list
GPU: 0BDF: 0000:05:00.0UUID: afff74a1-0000-1000-8054-e92b0a5d57c8GPU: 1BDF: 0000:26:00.0UUID: 0aff74a1-0000-1000-805b-ce698de95724GPU: 2BDF: 0000:46:00.0UUID: 97ff74a1-0000-1000-8065-fa81273af9ce[输出内容被截断]

显示详细的 GPU 信息

amd-smi static 命令提供关于 GPU 的全面静态信息,包括硬件细节、驱动程序版本和功能。

$ amd-smi static
GPU: 0ASIC:MARKET_NAME: MI300X-OVENDOR_ID: 0x1002VENDOR_NAME: Advanced Micro Devices Inc. [AMD/ATI]SUBVENDOR_ID: 0x1002DEVICE_ID: 0x74a1REV_ID: 0x00ASIC_SERIAL: 0xAF54E92B0A5D57C8OAM_ID: 7BUS:BDF: 0000:05:00.0MAX_PCIE_WIDTH: 16MAX_PCIE_SPEED: 32 GT/sPCIE_INTERFACE_VERSION: Gen 5SLOT_TYPE: OAM[输出内容被截断]

显示详细的 GPU 指标

使用 amd-smi metric 查看实时指标,如 GPU 利用率、温度、功耗和内存使用情况。

$ amd-smi metric
GPU: 0USAGE:GFX_ACTIVITY: 100 %UMC_ACTIVITY: 0 %MM_ACTIVITY: N/AVCN_ACTIVITY: [0 %, 0 %, 0 %, 0 %]POWER:SOCKET_POWER: 234 WGFX_VOLTAGE: N/A mVSOC_VOLTAGE: N/A mVMEM_VOLTAGE: N/A mVPOWER_MANAGEMENT: ENABLEDTHROTTLE_STATUS: UNTHROTTLEDCLOCK:GFX_0:CLK: 2102 MHzMIN_CLK: 500 MHzMAX_CLK: 2102 MHzCLK_LOCKED: DISABLEDDEEP_SLEEP: DISABLEDGFX_1:CLK: 2101 MHzMIN_CLK: 500 MHzMAX_CLK: 2102 MHzCLK_LOCKED: DISABLEDDEEP_SLEEP: DISABLEDGFX_2:CLK: 2107 MHzMIN_CLK: 500 MHzMAX_CLK: 2102 MHzCLK_LOCKED: DISABLEDDEEP_SLEEP: DISABLED
[输出内容被截断]

性能监控

amd-smi monitor 命令显示 GPU、内存、功耗、PCIe 带宽等的利用率指标。默认情况下,`amd-smi monitor` 会为每个 GPU 输出 18 个指标。传入特定参数可限制显示的指标类型。

-p, --power-usage            监控功耗(单位:瓦特)
-t, --temperature            监控温度(单位:摄氏度)
-u, --gfx                    监控图形利用率(百分比)和时钟频率(MHz)
-m, --mem                    监控内存利用率(百分比)和时钟频率(MHz)
-n, --encoder                监控编码器利用率(百分比)和时钟频率(MHz)
-d, --decoder                监控解码器利用率(百分比)和时钟频率(MHz)
-s, --throttle-status        监控热节流状态
-e, --ecc                    监控 ECC 单比特、ECC 双比特和 PCIe 重播错误计数
-v, --vram-usage             监控内存使用情况(单位:MB)
-r, --pcie                   监控 PCIe 带宽(单位:Mb/s)

例如,要监控功耗、GPU 利用率、温度和内存利用率,请运行 amd-smi monitor -putm

$ amd-smi monitor -putm
GPU  POWER  GPU_TEMP  MEM_TEMP  GFX_UTIL  GFX_CLOCK  MEM_UTIL  MEM_CLOCK0  182 W     42 °C     41 °C      83 %   1613 MHz       0 %   1230 MHz1  143 W     40 °C     39 °C      13 %    358 MHz       0 %   1173 MHz2  117 W     41 °C     40 °C       0 %    120 MHz       0 %    900 MHz3  116 W     40 °C     38 °C       1 %    134 MHz       0 %    913 MHz4  118 W     42 °C     40 °C       0 %    120 MHz       0 %    900 MHz5  118 W     39 °C     38 °C       0 %    120 MHz       0 %    900 MHz6  116 W     41 °C     41 °C       0 %    120 MHz       0 %    900 MHz7  118 W     40 °C     37 °C       0 %    120 MHz       0 %    900 MHz

查看运行进程

amd-smi process 命令显示 GPU 上运行的进程的详细信息,包括它们的 PID、内存使用情况和 GPU 利用率。使用 sudo 运行命令可以包括其他用户拥有的进程。

$ sudo amd-smi process
GPU: 0PROCESS_INFO:NAME: pt_main_threadPID: 207590MEMORY_USAGE:GTT_MEM: 2.0 MBCPU_MEM: 202.0 MBVRAM_MEM: 7.3 GBMEM_USAGE: 7.5 GBUSAGE:GFX: 0 nsENC: 0 nsGPU: 1PROCESS_INFO:NAME: pt_main_threadPID: 207591MEMORY_USAGE:GTT_MEM: 2.0 MBCPU_MEM: 202.0 MBVRAM_MEM: 7.4 GBMEM_USAGE: 7.6 GB[输出截断]

设置可配置的硬件参数

amd-smi set 命令可用于更改硬件参数,例如风扇速度、内存和计算分区以及功率限制。例如,要使用 set 命令调整 GPU 的功率限制:

amd-smi set -g 0 -o 650

这将 GPU 0 的功率限制设置为 650 瓦。请记住,在进行调整之前,请检查您的特定 GPU 型号的支持功率范围。

使用 amd-smi reset 命令删除自定义功率限制:

amd-smi reset -g 0 -o

附加功能

运行 amd-smi --help 查看可用命令的完整列表。

AMD-SMI 命令:version           显示版本信息list              列出 GPU 信息static            获取指定 GPU 的静态信息firmware (ucode)  获取指定 GPU 的固件信息bad-pages         获取指定 GPU 的坏页信息metric            获取指定 GPU 的指标/性能信息process           列出指定 GPU 上运行的通用进程信息event             显示指定 GPU 的事件信息topology          显示设备的拓扑信息set               设置设备选项reset             重置设备选项monitor           监控目标设备的指标xgmi              显示设备的 xgmi 信息

每个命令都支持使用修改器以逗号分隔值 (CSV)、JavaScript 对象表示法 (JSON) 或直接输出到文件。

命令修饰符:--json                   以 JSON 格式显示输出(默认以人类可读格式)。--csv                    以 CSV 格式显示输出(默认以人类可读格式)。--file FILE              将输出保存到提供路径上的文件中(默认标准输出)。

例如,传递 --csv 参数给 amd-smi process 将以逗号分隔值输出进程信息。

$ sudo amd-smi process --csv
gpu,name,pid,gtt_mem,cpu_mem,vram_mem,mem_usage,gfx,enc
0,pt_main_thread,207590,2134016,211795968,7889485824,8103415808,0,0
1,pt_main_thread,207591,2134016,211795968,7923122176,8137052160,0,0
2,pt_main_thread,207589,2134016,211795968,7889575936,8103505920,0,0
3,pt_main_thread,207588,2166784,211763200,7822258176,8036188160,0,0
4,pt_main_thread,207595,2134016,211795968,7889514496,8103444480,0,0
5,pt_main_thread,207590,2134016,211795968,7822381056,8036311040,0,0
6,pt_main_thread,207597,2134016,211795968,7923064832,8136994816,0,0
7,pt_main_thread,207593,2134016,211795968,7889465344,8103395328,0,0

输出可以通过管道传输到 column 命令,以将值格式化为表格。

$ sudo amd-smi process --csv | column -t -s,
gpu  name            pid     gtt_mem  cpu_mem    vram_mem    mem_usage   gfx  enc
0    pt_main_thread  207590  2134016  211795968  7889485824  8103415808  0    0
1    pt_main_thread  207591  2134016  211795968  7923122176  8137052160  0    0
2    pt_main_thread  207589  2134016  211795968  7889575936  8103505920  0    0
3    pt_main_thread  207588  2166784  211763200  7822258176  8036188160  0    0
4    pt_main_thread  207595  2134016  211795968  7889514496  8103444480  0    0
5    pt_main_thread  207597  2134016  211795968  7822381056  8036311040  0    0
6    pt_main_thread  207594  2134016  211795968  7923064832  8136994816  0    0
7    pt_main_thread  207593  2134016  211795968  7889465344  8103395328  0    0

结合 jq 命令的 JSON 输出可以用来过滤结果。以下示例命令过滤 amd-smi static 的输出只显示系统中第一个 GPU 的 VRAM 信息。

$ amd-smi static --json | jq '.[0]["vram"]'
{"type": "HBM","vendor": "N/A","size": {"value": 196592,"unit": "MB"}
}

这样,你可以按需查看和处理 GPU 信息,非常适合监控和调整硬件性能。通过适当的命令和参数结合,你可以充分利用 amd-smi 提供的功能来满足你的具体需求。

显示固件信息

运行 amd-smi firmware 来查看系统中所有 GPU 的固件信息。

$ amd-smi firmware
GPU: 0FW_LIST:FW 0:FW_ID: CP_MEC1FW_VERSION: 147FW 1:FW_ID: CP_MEC2FW_VERSION: 147FW 2:FW_ID: RLCFW_VERSION: 64FW 3:FW_ID: SDMA0FW_VERSION: 19FW 4:FW_ID: SDMA1FW_VERSION: 19FW 5:FW_ID: VCNFW_VERSION: 61.13.00.CFW 6:FW_ID: PSP_SOSDRVFW_VERSION: 36.02.4CFW 7:FW_ID: TA_RASFW_VERSION: 20.00.00.0DFW 8:FW_ID: TA_XGMIFW_VERSION: 20.00.01.13FW 9:FW_ID: PMFW_VERSION: 85.110.0[输出已截断]

检查内存状态

可以把内存想象成一本有很多页的书,每一页代表一个存储数据的位置。如果某个页“坏掉了”,就意味着该页上的数据无法正确读写。由于电涌、磨损等多种原因,内存页可能坏掉。当 GPU 检测到一个坏页时,它会将该页标记为不可用,防止错误传播。可以使用 amd-smi bad-pages 命令查看坏页面。

$ amd-smi bad-pages
GPU: 0RETIRED: 没有发现坏页PENDING: 没有发现坏页UN_RES: 没有发现坏页GPU: 1RETIRED: 没有发现坏页PENDING: 没有发现坏页UN_RES: 没有发现坏页[输出已截断]

显示 GPU 拓扑信息

运行 amd-smi topology 可以显示拓扑信息,例如链路可访问性、GPU 之间的跳数/相对权重、链路类型和 NUMA 带宽信息。

$ amd-smi topology
ACCESS TABLE:0000:05:00.0 0000:26:00.0 0000:46:00.0 0000:65:00.0 0000:85:00.0 0000:a6:00.0 0000:c6:00.0 0000:e5:00.0
0000:05:00.0 ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED
0000:26:00.0 ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED
0000:46:00.0 ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED
0000:65:00.0 ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED
0000:85:00.0 ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED
0000:a6:00.0 ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED
0000:c6:00.0 ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED
0000:e5:00.0 ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLED      ENABLEDWEIGHT TABLE:0000:05:00.0 0000:26:00.0 0000:46:00.0 0000:65:00.0 0000:85:00.0 0000:a6:00.0 0000:c6:00.0 0000:e5:00.0
0000:05:00.0 0            15           15           15           15           15           15           15
0000:26:00.0 15           0            15           15           15           15           15           15
0000:46:00.0 15           15           0            15           15           15           15           15
0000:65:00.0 15           15           15           0            15           15           15           15
0000:85:00.0 15           15           15           15           0            15           15           15
0000:a6:00.0 15           15           15           15           15           0            15           15
0000:c6:00.0 15           15           15           15           15           15           0            15
0000:e5:00.0 15           15           15           15           15           15           15           0[输出已截断]

查看 GPU 到 GPU 的链路指标

使用 amd-smi xgmi 命令可以显示 xGMI 统计信息。xGMI 也称为 AMD Infinity Fabric™,提供 GPU 之间的高速连接。

$ amd-smi xgmi
LINK METRIC TABLE:bdf          bit_rate max_bandwidth link_type 05:00.0 26:00.0 46:00.0 65:00.0 85:00.0 a6:00.0 c6:00.0 e5:00.0
GPU0   05:00.0      32 Gb/s  512 Gb/s      XGMIRead                                                N/A     1259 KB 1 KB    1 KB    1 KB    1141 KB 9774 KB 1069 KBWrite                                               N/A     1074 KB 1 KB    1 KB    1 KB    4109 KB 1134 KB 1262 KB
GPU1   26:00.0      32 Gb/s  512 Gb/s      XGMIRead                                                0 KB     N/A    9808 KB 1022 KB 1 KB    1 KB    1149 KB 1209 KBWrite                                               0 KB     N/A    1564 KB 1279 KB 1 KB    1 KB    9858 KB 1412 KB[输出截断]

监控硬件事件

使用 amd-smi event 命令可以查看系统中所有 GPU 的事件信息。工具启动后,它会继续监听和显示 GPU 事件,直到手动停止。事件类型包括热节流事件、硬件重置和内存读取错误等。

$ amd-smi event
EVENT LISTENING:按下 q 并回车(ENTER)键以停止

从 rocm-smi 过渡

熟悉 rocm-smi 的用户会发现 amd-smi 提供了类似的功能,并且有所增强。以下是一些常用命令的快速对比:

Task

rocm-smi

amd-smi

列出 GPU

rocm-smi -i

amd-smi list

显示利用率

rocm-smi

amd-smi monitor

显示内存信息

rocm-smi --showmemuse

amd-smi monitor -m -v

显示详细硬件信息和设置

rocm-smi -a

amd-smi static

尽管语法略有不同,`amd-smi` 通常提供更详细的输出并具有额外的功能,相较于 rocm-smi

注意:虽然 rocm-smi 将继续接收错误修复和维护更新,新的功能和额外的硬件支持将优先考虑 amd-smi

结论

在这篇博客文章中,我们深入介绍了 amd-smi 的实际操作,向您展示了如何使用和访问其主要功能和特性。无论您是管理大规模计算环境还是优化单个服务器,`amd-smi` 都能提供所需的洞察力和控制,以最大限度地发挥 AMD GPU 的潜力。要了解更多关于 amd-smi 及其功能的信息,请访问 amd-smi 工具文档。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于yolov8+deepsort+gradio实现目标追踪演示
  • 用终端请求接口
  • 尚品汇-Jenkins部署构建服务模块、Linux快照备份(五十七)
  • Maya---机械模型制作
  • Webshell机制绕过的个人理解总结
  • 手写SpringMVC
  • SQL查询中字段选择的两种写法:select * VS select 字段名
  • C#/.NET/.NET Core技术前沿周刊 | 第 6 期(2024年9.16-9.22)
  • Elastic 的 OpenTelemetry PHP 发行版简介
  • ICM20948 DMP代码详解(37)
  • 【MyBatis】Java 数据持久层框架:认识 MyBatis
  • js进阶——作用域闭包
  • 【JS代码规范】如何优化if-else代码规范
  • 【探索数据结构与算法】插入排序:原理、实现与分析(图文详解)
  • 【C++篇】引领C++模板初体验:泛型编程的力量与妙用
  • bootstrap创建登录注册页面
  • C语言笔记(第一章:C语言编程)
  • DataBase in Android
  • express如何解决request entity too large问题
  • extract-text-webpack-plugin用法
  • Java编程基础24——递归练习
  • Java知识点总结(JavaIO-打印流)
  • Linux链接文件
  • python 装饰器(一)
  • Swift 中的尾递归和蹦床
  • Swoft 源码剖析 - 代码自动更新机制
  • windows-nginx-https-本地配置
  • 阿里云应用高可用服务公测发布
  • 京东美团研发面经
  • 配置 PM2 实现代码自动发布
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 使用API自动生成工具优化前端工作流
  • 小程序开发中的那些坑
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 阿里云移动端播放器高级功能介绍
  • # Redis 入门到精通(一)数据类型(4)
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (4)(4.6) Triducer
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (离散数学)逻辑连接词
  • (南京观海微电子)——COF介绍
  • (七)Activiti-modeler中文支持
  • (十五)使用Nexus创建Maven私服
  • (一)基于IDEA的JAVA基础1
  • (原)本想说脏话,奈何已放下
  • (转)c++ std::pair 与 std::make
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法