跳到主要内容

用夜莺监控 AMD ROCm SMI

调用 rocm-smi 采集 AMD GPU 的利用率、显存、温度、功耗和时钟,规则覆盖过热和显存吃满。

最后校对于

AMD ROCm SMI 插件从 Telegraf 移植,执行 ROCm 自带的 rocm-smi 二进制并解析输出,得到每张 AMD GPU 的使用率、显存占用、温度、功耗、风扇和各级时钟。

主机上要装好 ROCm,默认在 /opt/rocm/bin/rocm-smi;路径不同就在配置里改 bin_path。规则针对温度过高、显存占满和功耗接近上限。

模板里有什么​

  • 4 条告警规则,每条附处置步骤
  • Categraf 采集配置:input.amd_rocm_smi

怎么接入​

  1. 安装 Categraf,把下面的配置放到 conf/input.amd_rocm_smi/rocm.toml,按实际地址和凭据改好后重启 Categraf。启动日志里出现 input: local.amd_rocm_smi started 就说明插件已加载。

    # Query statistics from AMD Graphics cards using rocm-smi binary
    # bin_path = "/opt/rocm/bin/rocm-smi"

    ## Optional: timeout for GPU polling
    # timeout = "5s"
  2. 在夜莺「集成中心」里找到 AMD ROCm SMI,把仪表盘和告警规则导入到业务组。

  3. 导入的告警规则默认是停用的。先确认指标已经入库,再按自己环境的阈值逐条启用。

内置告警规则​

共 4 条。每条给出触发条件(PromQL)和告警后的处置步骤,导入后可以直接改阈值。

AMD GPU 显存使用率过高​

S2 警告 · 持续 5 分钟 · 触发条件:

amd_rocm_smi_memory_used / (amd_rocm_smi_memory_total > 0) * 100 > 90

处置步骤:

  1. 从告警标签取 gpu_id 与 name,执行 rocm-smi --showmemuse --showpids 确认是哪些进程占用显存;
  2. 有已退出但显存未释放的僵尸进程时,确认无人使用后 kill 掉释放;
  3. 训练任务本身需要这么多显存的,调小 batch size 或启用梯度累积、混合精度;
  4. 多任务共用一张卡的,改用显存隔离或排队调度,避免互相挤占导致全部失败。

AMD GPU 结温过高​

S1 紧急 · 持续 3 分钟 · 触发条件:

amd_rocm_smi_temperature_sensor_junction > 95

处置步骤:

  1. 从告警标签取 gpu_id,执行 rocm-smi --showtemp --showfan --showpower 确认温度、风扇转速与功耗;
  2. 风扇转速偏低的检查风扇是否故障或积灰,必要时停机清理;
  3. 风扇已满速仍高温的,检查机箱风道与机房进风温度,确认相邻卡槽是否过密导致散热不良;
  4. 短期可用 rocm-smi --setpoweroverdrive 降低功耗上限限制发热,但必须尽快解决散热问题。

AMD GPU 边缘温度过高​

S2 警告 · 持续 5 分钟 · 触发条件:

amd_rocm_smi_temperature_sensor_edge > 85

处置步骤:

  1. 从告警标签取 gpu_id,执行 rocm-smi --showtemp --showclocks 对比温度与当前频率,确认是否已经降频;
  2. 检查同机上其他 GPU 的温度,普遍偏高说明是机房或机箱级散热问题;
  3. 单卡偏高的检查该卡的风扇、散热硅脂与安装位置;
  4. 处理散热的同时评估是否需要降低该卡的任务并发,避免长期在降频状态下跑任务。

AMD GPU 显存温度过高​

S2 警告 · 持续 5 分钟 · 触发条件:

amd_rocm_smi_temperature_sensor_memory > 95

处置步骤:

  1. 从告警标签取 gpu_id,执行 rocm-smi --showtemp 确认显存温度与结温的差值;
  2. 显存温度显著高于结温的,通常是显存侧散热片接触不良,需要停机检查;
  3. 检查是否有长期跑大显存带宽的任务(如大模型推理),可通过降低并发缓解;
  4. 同时执行 rocm-smi --showretiredpages 检查是否已出现坏页,坏页增长说明显存正在劣化,需安排更换。

相关链接​