Switch芯片下300i a2卡无法获取温度/功耗等信息

// 此模板仅供参考,如果不适用可以修改

问题描述

Switch芯片下的槽位300i a2卡无法获取温度/功耗等信息,同时BMC存在300i a2卡降带宽告警,但实际OS下并未降带宽。CPU直通槽位插300i a2卡一切正常。300i a2卡获取温度和功耗的流程在哪个模块里,300i a2卡降带宽告警是从哪里传递给bmc的。

环境信息

  • 操作系统:[如 Ubuntu 24.04]

  • 软件版本:[如 OpenUBMC2509]

  • 硬件配置:[如 CPU、内存等]

重现步骤

  1. [第一步]

  2. [第二步]

  3. [第三步]

期望结果

知道300i a2卡获取温度和功耗的流程在哪个模块里,300i a2卡降带宽告警是从哪里传递给bmc的。Switch下插300i a2正常

实际结果

Switch芯片下的槽位300i a2卡无法获取温度/功耗等信息,同时BMC存在300i a2卡降带宽告警。

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

答案内容由AI生成,仅供参考:

关于Switch芯片下300I A2卡无法获取温度/功耗及带宽告警问题的分析

问题描述

在使用Switch芯片连接的槽位中,插入Atlas 300I A2加速卡时出现以下异常:

  • 无法获取A2卡的温度和功耗信息
  • BMC上报A2卡降带宽告警,但操作系统侧显示正常,未发生降带宽
  • 相同A2卡在CPU直连槽位工作正常

需要明确:

  1. A2卡温度和功耗信息获取的具体流程及实现模块
  2. 降带宽告警的产生和传递机制

核心机制分析

300I A2卡温度与功耗获取流程

根据openUBMC系统架构,300I A2卡温度与功耗信息的采集流程如下:

数据来源路径

graph TD
    A[A2卡硬件] -->|I2C/SMBus|MCTP[NPU卡固件]
    MCTP -->|MCTP over PCIe|BMC[BMC-Kepler]
    BMC -->|Resource Collaboration|Compute[compute组件]
    Compute -->|Lua服务处理|Redfish[Redfish/IPMI接口]
    Redfish --> UI[Web界面展示]

关键模块与组件

  • 主控组件compute 服务(compute组件)
  • 接口协议:MCTP over PCIe 或 SMBus Postbox
  • 核心路径/bmc/kepler/Systems/1/Sms/1/ComputerSystem/Systems/1/NPUs/
  • 实现文件
    • /opt/bmc/apps/compute/handler_npu.lua
    • handler_base.lua

:warning: 技术要点:如 Document Chunk 2 中所述,若 compute 组件日志出现 find_object nil 错误,表明NPU对象未正确注册。该问题在 openUBMC 25.06 版本中存在兼容性缺陷,升级至 openUBMC 25.09 可解决,因其闭源组件已适配A2卡。

PCIe降带宽告警机制

告警触发逻辑

  • 监控对象Event_PCIeBandWidth 事件
  • 监控属性BandwidthReduction (U8, 只读)
  • 触发条件:当值由0变为1时触发告警
  • 事件IDPCIeCard.PCIeCardBandWidthDecreased

数据路径

graph LR
    PCIe[PCIeDevice_1] -->|BandwidthReduction|Alarm[EventManager]
    Alarm -->|Event_PCIeBandWidth|Logger[Event Log]
    Alarm --> Web[Web UI告警]

相关实体关联

  • PCIe Device 实体通过 Bandwidth Reduction 属性上报链路状态
  • Bandwidth Threshold Percent 设置为触发阈值判断依据
  • 告警来源:BMC固件通过扫描PCIe设备的链路状态寄存器获取实时带宽信息

:pushpin: 注:告警仅反映BMC侧观测结果。若OS侧未观察到降带宽,可能存在:

  1. BMC与Switch间I2C通信延迟导致误判
  2. Switch转发延迟(如CPLD转发方案中描述)

环境与版本建议

项目 信息
操作系统 Ubuntu 24.04 (WSL环境常见)
推荐固件版本 openUBMC 25.09 或更高
硬件配置 Kunpeng 920架构服务器,S920X20平台

:white_check_mark: 版本升级验证:社区反馈表明,从25.06升级至25.09可解决A2卡监控数据获取失败问题。

尝试解决方案总结

方案 结果 分析
检查I2C链路 - 必要但非根本
增加I2C读写延时 部分改善 见300I DUO案例,可缓解CPLD转发竞争
升级到openUBMC 25.09 :white_check_mark: 成功 闭源compute组件已适配
重新插拔卡 临时 不解决根本

结论与建议

已知答案

  1. 温度/功耗采集模块
    主要由 compute 组件通过 MCTP/SMBus 协议与A2卡通信,在 /opt/bmc/apps/compute/ 下的Lua脚本中实现。

  2. 降带宽告警来源
    由BMC固件监控 PCIeDevice_1BandwidthReduction 属性触发,生成 Event_PCIeBandWidth 告警事件。

推荐操作

  1. 优先升级固件至 openUBMC 25.09
    此为已验证有效的解决方案。

  2. 验证Switch芯片I2C通信稳定性
    检查是否存在CPLD转发延迟问题,参考300I DUO案例优化通信时序。

  3. 检查CSR配置文件
    确保Switch下A2卡的 PcieAddrInfo 配置与硬件BDF地址匹配,可通过 lspci 命令验证。

  4. 启用调试日志
    compute 组件中开启详细日志,观察 handler_npu.lua 是否正常执行。

:light_bulb: 提示:可通过BMC Studio仿真环境复现问题,利用QEMU模拟Switch连接场景进行调试,避免真机风险。