了解你的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 |
|
|
显示利用率 |
|
|
显示内存信息 |
|
|
显示详细硬件信息和设置 |
|
|
尽管语法略有不同,`amd-smi` 通常提供更详细的输出并具有额外的功能,相较于 rocm-smi
。
注意:虽然 rocm-smi
将继续接收错误修复和维护更新,新的功能和额外的硬件支持将优先考虑 amd-smi
。
结论
在这篇博客文章中,我们深入介绍了 amd-smi
的实际操作,向您展示了如何使用和访问其主要功能和特性。无论您是管理大规模计算环境还是优化单个服务器,`amd-smi` 都能提供所需的洞察力和控制,以最大限度地发挥 AMD GPU 的潜力。要了解更多关于 amd-smi
及其功能的信息,请访问 amd-smi 工具文档。