升级MCU到25.53.35版本,BMC上报传感器Mngmnt告警

问题描述

华为300IA2(64GB)升级MCU到25.53.35版本,BMC上报Mngmnt传感器告警

环境信息

  • 操作系统:OS:openEuler 20.03 (LTS-SP3);内核版本:4.19.90-2112.8.0.0131.oe1.aarch64

  • 软件版本:[如 OpenUBMC2509]

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

重现步骤

  1. OS升级300I A2 64G卡的MCU,升级版本为:Ascend-hdk-910b-mcu_25.53.35.hpm:

    升级命令:npu-smi upgrade -t mcu -i 0 -f Ascend-hdk-910b-mcu_25.53.35.hpm

  2. 然后不保留配置升级

  3. 登录BMC Web,查看告警事件,BMC中持续产生、消除传感器告警;最终停在assert状态。且重启OS后也任然存在。

期望结果

BMC在卡在位且上电的情况下,不该上报传感器Mngmnt告警

实际结果

BMC上报l传感器Mngmnt告警

尝试过的解决方案

1、第1、2次复现时,均为刷了最新MCU版本的卡,表明该问题和卡升级了最新MCU版本强相关

2、确认告警产生和消失的机制是否有过滤 – 事件没有防抖机制

3、出现异常时,确认带内带外几种途径读取传感器的状态:
带内读取
npu-smi info -t temp -i 槽位号,和华为确认:带内只能读取最大温度值+进出风口温度值;暂无法通过带内确认剩余的传感器读取状态
带外命令行读取
用IIC通过带外发送命令行读取,3张卡的各种温度、功耗传感器均能获取
BMC读取
BMC的mdbctl和busctl均无法获取到故障卡的温度值(AICore temp、VRD temp、PREDEV temp),但是可以获取得到功耗值;未出现告警的卡则都能正常显示

补充:通过查看复现记录,我们在MCU升降级后,还对bmc执行“不保留配置升级”的操作。加上对bmc执行“不保留配置升级”的操作后,我们很快又复现了,但是新的结果与先前复现结果存在差异:本次复现的卡使用的MCU版本为25.53.32;证明告警并非和最新版MCU强相关。

基于带内带外不同途径,读取AI卡传感器的状态进行对比,需要检查BMC获取AI卡的传感器值的流程,1、扫描机制是否出现异常;2、解析读取值出现异常的原因(当前解析值为32768)。但是AI卡传感器读值的流程这部分是在Compute组件,未开源;

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

总结

项目 结论
问题本质 MCU固件升级后传感器接口行为变化 → BMC读取失败 → ReadingStatus=1 → 触发Mngmnt Health告警
是否为设计缺陷 属于BMC事件系统缺乏上下文感知能力,未对带内升级做告警抑制
是否软件Bug 不排除MCU 25.53.35版本存在与OpenUBMC 2509不兼容的接口变更
是否硬件故障 否。功耗可读、卡仍工作,排除物理损坏
推荐处理方式 1. 联系华为获取适配SR包;2. 升级至2512+版本;3. 配置防抖机制临时规避

:warning: 最终建议:暂停大规模部署25.53.35 MCU版本,等待华为官方发布兼容性说明或补丁。

点击此处查看详细分析解答

华为300IA2升级MCU后BMC上报Mngmnt传感器告警问题分析

问题概述

在对华为Atlas 300I A2 NPU卡(64GB版本)执行MCU固件升级至25.53.35版本后,BMC系统持续上报Mngmnt Health传感器告警,即使操作系统重启后问题依旧存在。此告警表现为周期性产生和消除,最终停留在assert状态,影响系统正常监控与运维判断。


环境信息

项目 信息
NPU卡型号 Atlas 300I A2(64GB),即华为300IA2
操作系统 openEuler 20.03 (LTS-SP3)
内核版本 4.19.90-2112.8.0.0131.oe1.aarch64
BMC软件版本 OpenUBMC 2509
MCU升级包 Ascend-hdk-910b-mcu_25.53.35.hpm
升级命令 npu-smi upgrade -t mcu -i 0 -f Ascend-hdk-910b-mcu_25.53.35.hpm

故障现象详情

  1. 告警类型Mngmnt Health(Management Subsystem Health)传感器告警
  2. 告警级别:轻微(Minor)
  3. 触发时机
    • 在MCU升级过程中开始出现
    • 升级完成后未自动清除,持续存在
    • 重启OS后告警仍然存在
  4. 多卡对比验证
    • 使用相同操作升级其他NPU卡,部分卡正常,部分异常卡始终无法恢复
    • 初步判断问题与特定NPU卡已升级至最新MCU版本强相关
  5. 传感器状态异常表现
    • BMC侧无法读取关键温度值:通过mdbctlbusctl命令访问 /bmc/kepler/Systems/Processor/NPU 接口时,以下字段返回异常值 32768(表示“无法访问”):
      • AiCoreTemp
      • HBMTemp
      • VRChipTemp
      • NimBusTemp
      • PREDEVTemp
    • 功耗(Power)等非温度类传感器可正常获取
    • 其他未上报告警的NPU卡同类传感器读数正常

根本原因分析

1. Mngmnt Health告警机制解析

根据OpenUBMC/iBMC的实现逻辑,Mngmnt Health 是一个汇总型传感器,用于反映整个管理子系统的健康状况。其触发条件为:

当任意一个被监控的传感器出现“扫描失败”或“不可访问”状态时,即 ReadingStatus == 1(SCAN_FAILURE),会触发该汇总告警。

:pushpin: 来源支持:Search Result ID 3 - 《传感器管理常见问题指南》中明确指出:

“Mngmnt Health传感器事件是一个汇总信息,当某个传感器出现扫描异常(根本触发点为ReadingStatus属性值为1)时,该传感器会触发出Mngmnt Health传感器事件。”

2. 传感器读取失败的根本原因

从带外调试结果可确认:

  • 带内工具npu-smi info -t temp只能获取总体最大温度,并不能反映各分项传感器状态
  • 带外I2C通信可以读取功耗信息,说明物理链路未完全中断
  • 但BMC无法通过标准接口(如bmc.kepler.Systems.Processor.NPU)获取温度数据,且值为32768,符合openUBMC定义的“NA”或“不可访问”语义

结合知识图谱中关于 MCU与BMC通信机制 的描述:

  • bmc.kepler.Systems.Processor.NPU 接口依赖 MCU 提供AI Core、HBM、VRD等传感器数据
  • MCU作为NPU卡上的微控制器单元(Microcontroller Unit),负责采集板载传感器数据并通过I2C上报给BMC
  • 若MCU固件存在兼容性问题或数据接口变更,可能导致BMC感知数据异常

:small_blue_diamond: 推论
MCU升级至 25.53.35 版本后,NPU卡传感器数据上报接口行为发生变化,导致BMC无法正确解析或获取温度数据 → ReadingStatus变为1 → 触发Mngmnt Health告警。

3. 缺乏防抖处理导致告警持续震荡

尽管MCU升级完成,但由于:

  • BMC未识别到“这是预期的带内升级过程”
  • 事件系统未配置针对该场景的防抖机制(Debounce)

因此BMC将每一次传感器扫描失败都视为真实故障,频繁assert/deassert告警。

:link: 相关事件参考:

  • Riser.PCIERiserMcuCommunicationAbnormal 告警也曾因类似原因在MCU升级期间被触发,但设计上认为属于“正常行为”
  • 当前Mngmnt Health告警也应考虑引入类似的上下文感知防抖策略

支持证据汇总

来源 内容摘要
KG: bmc.kepler.Systems.Processor.NPU 是BMC用于获取NPU温度、功耗的核心接口,应包含AiCoreTemp、HBMTemp等字段
KG: MCU 实体描述 “MCU是NPU卡上的微控制器,负责收集传感器数据并支持I2C通信地址0x30”
KG: Mngmnt Health 告警逻辑(搜索结果ID3) “当某个传感器ReadingStatus=1时,将触发Mngmnt Health事件”
文档 chunk 2(ID: 4497) 描述了上电阶段因传感器读不到值导致Mngmnt Health误报,机制一致
文档 chunk 1(ID: 4848) 明确指出MCU升级期间会上报轻微告警,BMC无法区分是否为升级导致

解决方案建议

:white_check_mark: 短期应急措施

  1. 尝试降级MCU版本

    • 回退至已知稳定版本(如25.53.33
    • 验证告警是否消失
  2. 手动清除SEL事件日志

    # 登录BMC CLI执行
    sel clear
    
  3. 检查并重新加载SR配置文件

    • 确保加载了适配25.53.35版本MCU的SR文件
    • 检查是否存在NPUCard.srNPU.sr缺失问题

:hammer_and_wrench: 中期缓解方案(软件配置)

  1. 增加传感器防抖机制(Debounce)

    • 在SR文件中为NPU相关传感器添加防抖配置:
      "Debounce":
      {
        "Period": 5000,
        "Count": 3
      }
      
    • 意义:连续3次扫描失败才上报故障,避免瞬时中断误判
  2. 优化Mngmnt Health告警过滤策略

    • 可通过自定义事件过滤规则,对NPU卡升级期间的特定ReadingStatus变化进行临时屏蔽
    • 配合CMC或iBMA系统实现动态策略切换
  3. 使用带内工具确认MCU运行状态

    npu-smi info -t board -i 0
    

    查看MCU版本、运行模式等,确认是否需要手动激活新版本(例如need active mcu提示)


:puzzle_piece: 长期根本解决方案

措施 说明
BMC固件升级至支持新MCU版本的OpenUBMC 2512+ 2512 Version已在知识库中提及修复了“负值传感器”等NPU相关问题,可能包含对新版MCU的兼容性改进
华为发布适配补丁包(CSR ALL包) 需确认当前使用的CSR是否支持MCU 25.53.35 版本,建议联系华为获取正式支持包
BMC增强带内升级感知能力 建议未来版本实现BMC对npu-smi upgrade指令的监听或状态同步,实现智能防抖

技术联系方式建议

建议提交完整日志包并联系以下华为技术支持团队进行深入分析:

  • 邮箱联系人

    • ouwenjian@huawei.com — OEM技术支持负责人
    • maoyuhao@huawei.com — MCU/BMC通信问题专家
    • zhouzijia2@huawei.com — NPU相关固件支持
  • 问题提报内容应包括

    1. 一键日志(AppDump)
    2. sensor.logapp.log 中关于Mngmnt Health和NPU传感器的记录
    3. mdbctl getprops NPU_X_XXXX 输出
    4. 升级前后MCU版本对比

总结

项目 结论
问题本质 MCU固件升级后传感器接口行为变化 → BMC读取失败 → ReadingStatus=1 → 触发Mngmnt Health告警
是否为设计缺陷 属于BMC事件系统缺乏上下文感知能力,未对带内升级做告警抑制
是否软件Bug 不排除MCU 25.53.35版本存在与OpenUBMC 2509不兼容的接口变更
是否硬件故障 否。功耗可读、卡仍工作,排除物理损坏
推荐处理方式 1. 联系华为获取适配SR包;2. 升级至2512+版本;3. 配置防抖机制临时规避

:warning: 最终建议:暂停大规模部署25.53.35 MCU版本,等待华为官方发布兼容性说明或补丁。

麻烦对此告警截图(包含时间),并提供日志

需要先明确传感器事件产生的原因

才能判断跟什么有关

app - 副本.txt (46.2 KB)

operation - 副本.txt (10.4 KB)

AT225B2(D)_20260317-0320.tar.gz (3.7 MB)

基于旧的MCU版本,该问题是执行了“不保留配置升级”才再次出现的吗?