wangdong
(Wangdong)
1
// 此模板仅供参考,如果不适用可以修改
问题描述
Switch芯片下的槽位300i a2卡无法获取温度/功耗等信息,同时BMC存在300i a2卡降带宽告警,但实际OS下并未降带宽。CPU直通槽位插300i a2卡一切正常。300i a2卡获取温度和功耗的流程在哪个模块里,300i a2卡降带宽告警是从哪里传递给bmc的。
环境信息
-
操作系统:[如 Ubuntu 24.04]
-
软件版本:[如 OpenUBMC2509]
-
硬件配置:[如 CPU、内存等]
重现步骤
-
[第一步]
-
[第二步]
-
[第三步]
期望结果
知道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直连槽位工作正常
需要明确:
- A2卡温度和功耗信息获取的具体流程及实现模块
- 降带宽告警的产生和传递机制
核心机制分析
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
技术要点:如 Document Chunk 2 中所述,若 compute 组件日志出现 find_object nil 错误,表明NPU对象未正确注册。该问题在 openUBMC 25.06 版本中存在兼容性缺陷,升级至 openUBMC 25.09 可解决,因其闭源组件已适配A2卡。
PCIe降带宽告警机制
告警触发逻辑
- 监控对象:
Event_PCIeBandWidth 事件
- 监控属性:
BandwidthReduction (U8, 只读)
- 触发条件:当值由0变为1时触发告警
- 事件ID:
PCIeCard.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设备的链路状态寄存器获取实时带宽信息
注:告警仅反映BMC侧观测结果。若OS侧未观察到降带宽,可能存在:
- BMC与Switch间I2C通信延迟导致误判
- Switch转发延迟(如CPLD转发方案中描述)
环境与版本建议
| 项目 |
信息 |
| 操作系统 |
Ubuntu 24.04 (WSL环境常见) |
| 推荐固件版本 |
openUBMC 25.09 或更高 |
| 硬件配置 |
Kunpeng 920架构服务器,S920X20平台 |
版本升级验证:社区反馈表明,从25.06升级至25.09可解决A2卡监控数据获取失败问题。
尝试解决方案总结
| 方案 |
结果 |
分析 |
| 检查I2C链路 |
- |
必要但非根本 |
| 增加I2C读写延时 |
部分改善 |
见300I DUO案例,可缓解CPLD转发竞争 |
| 升级到openUBMC 25.09 |
成功 |
闭源compute组件已适配 |
| 重新插拔卡 |
临时 |
不解决根本 |
结论与建议
已知答案
-
温度/功耗采集模块:
主要由 compute 组件通过 MCTP/SMBus 协议与A2卡通信,在 /opt/bmc/apps/compute/ 下的Lua脚本中实现。
-
降带宽告警来源:
由BMC固件监控 PCIeDevice_1 的 BandwidthReduction 属性触发,生成 Event_PCIeBandWidth 告警事件。
推荐操作
-
优先升级固件至 openUBMC 25.09
此为已验证有效的解决方案。
-
验证Switch芯片I2C通信稳定性
检查是否存在CPLD转发延迟问题,参考300I DUO案例优化通信时序。
-
检查CSR配置文件
确保Switch下A2卡的 PcieAddrInfo 配置与硬件BDF地址匹配,可通过 lspci 命令验证。
-
启用调试日志
在 compute 组件中开启详细日志,观察 handler_npu.lua 是否正常执行。
提示:可通过BMC Studio仿真环境复现问题,利用QEMU模拟Switch连接场景进行调试,避免真机风险。