Atlas 300l A2(32G)卡闪现 inspection failed告警

问题描述

压测Atlas 300l A2(32G)卡闪现 inspection failed告警然后消失

重现步骤

  1. 压测echo -e “Y\n” | ascend-dmi -p -dur 604800 -it 5 -pm history>> /home/workspace/stress.log &

  2. bmc上出现告警

  3. 告警消失

期望结果

不产生告警

实际结果

尝试过的解决方案

查看日志,NPU功耗获取失败,不清楚这个功耗为什么获取失败然后又恢复

2026-02-18 21:58:18.825103 event NOTICE: events.lua(110): System major count change 0 to 1 by [Event_InspectFail_01010509].
2026-02-18 21:58:18.826424 event NOTICE: events.lua(127): System Health change Normal to Major.
2026-02-18 21:58:18.835549 chassis NOTICE: led_policy_service.lua(82): get_event_health change to: Major
2026-02-18 21:58:18.854870 event NOTICE: hardware_event.lua(580): Event_InspectFail_01010509|{“source”:{“expressions”:[“expr((($1 & 4) == 0) && (($2 & 32768) == 0) ? 0 : 1)”],“properties”:[{“Service”:“bmc.kepler.compute”,“Property”:“FaultState”,“Interface”:“bmc.kepler.Systems.NPUCard”,“Path”:“/bmc/kepler/Systems/1/PCIeDevices/PCIeCards/NPUCards/NPUCard_1_01010509”},{“Service”:“bmc.kepler.compute”,“Property”:“PowerWatts”,“Interface”:“bmc.kepler.Systems.NPUCard”,“Path”:“/bmc/kepler/Systems/1/PCIeDevices/PCIeCards/NPUCards/NPUCard_1_01010509”}]},“value”:[0,65535],“type”:“synchronization”}
2026-02-18 21:58:19.012790 event NOTICE: abstract_event.lua(241): [Event_InspectFail_01010509] generate an event [assert] while reading change to [1].
2026-02-18 21:58:19.020750 redfish NOTICE: alarm.lua(600): received a event[26-0].
2026-02-18 21:58:19.020953 event_policy NOTICE: synchronizer.lua(253): received a event[26-0].
2026-02-18 21:58:19.184263 chassis NOTICE: led_service.lua(445): set SysHealLed state success, current state: 5, Capability: 2
2026-02-18 21:58:27.391932 event NOTICE: events.lua(110): System major count change 1 to 0 by [Event_InspectFail_01010509].
2026-02-18 21:58:27.396067 event NOTICE: events.lua(127): System Health change Major to Normal.
2026-02-18 21:58:27.405413 chassis NOTICE: led_policy_service.lua(82): get_event_health change to: Normal
2026-02-18 21:58:27.423189 event NOTICE: hardware_event.lua(580): Event_InspectFail_01010509|{“source”:{“expressions”:[“expr((($1 & 4) == 0) && (($2 & 32768) == 0) ? 0 : 1)”],“properties”:[{“Service”:“bmc.kepler.compute”,“Property”:“FaultState”,“Interface”:“bmc.kepler.Systems.NPUCard”,“Path”:“/bmc/kepler/Systems/1/PCIeDevices/PCIeCards/NPUCards/NPUCard_1_01010509”},{“Service”:“bmc.kepler.compute”,“Property”:“PowerWatts”,“Interface”:“bmc.kepler.Systems.NPUCard”,“Path”:“/bmc/kepler/Systems/1/PCIeDevices/PCIeCards/NPUCards/NPUCard_1_01010509”}]},“value”:[0,3506],“type”:“synchronization”}
2026-02-18 21:58:27.524207 event NOTICE: abstract_event.lua(241): [Event_InspectFail_01010509] generate an event [deassert] while reading change to [0].
2026-02-18 21:58:27.533649 event_policy NOTICE: synchronizer.lua(253): received a event[27-0].

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

Atlas 300I A2(32G) 推理卡出现“inspection failed”告警分析报告


问题描述

在对 Atlas 300I A2(32G) Inference Card 进行压力测试时,系统偶发出现 The PCIe card X (Atlas 300I A2(32G) Inference Card) inspection failed. 的严重告警(事件码:0x08000069),该告警短暂出现后自动消失。此现象虽为瞬态,但影响系统稳定性监控判断。


告警详情

属性 内容
告警事件码 0x08000069
告警名称 The PCIe card X inspection failed.
告警级别 严重(Major)
主体类型 PCIe Card
事件对象 Atlas 300I A2(32G) Inference Card
持续时间 数秒至数十秒(短暂闪现)
发生频率 压力测试期间偶发

示例日志记录:

2026-02-18 21:58:18.825103: [Event_InspectFail_01010509] assert - 检查失败
2026-02-18 21:58:27.524207: [Event_InspectFail_01010509] deassert - 检查恢复

根本原因分析

根据提供的日志信息和系统设计文档分析,该“inspection failed”告警的触发逻辑与 NPU卡的双重检查机制 相关。

告警触发机制

该告警由事件 Event_InspectFail_01010509 触发,其检测逻辑基于以下两个关键属性的组合判断:

expr((($1 & 4) == 0) && (($2 & 32768) == 0) ? 0 : 1)
  • $1:对应 NPUCardFaultState 字段
  • $2:对应 NPUCardPowerWatts 字段

只有当 FaultState 正常且 PowerWatts 非零 时,检查才通过(返回0)。否则触发告警。

告警出现与消失的原因

:white_check_mark: 断言(Assert)条件:告警产生

  • PowerWatts 获取失败值为0
  • 日志中明确记录该卡的功耗读数曾变为 & 32768 表达式的计算结果为,导致表达式返回1,从而触发告警。

:white_check_mark: 解除(Deassert)条件:告警消失

  • 系统再次读取到稳定的 PowerWatts 非零值(例如日志中显示 3506 表示正常)。
  • FaultState 依然为0(无硬件故障)。
  • 表达式重新返回0,告警自动解除。

:magnifying_glass_tilted_left: 核心结论:本次“inspection failed”告警的直接原因是:
在压力测试过程中,Atlas 300I A2(32G) 推理卡的 PowerWatts 属性出现瞬时读取失败或返回为0的情况


相关事实支持

1. 功耗监控依赖带外通信

根据《硬件兼容性列表》文档,PowerWatts 的获取方式如下:

属性 获取途径 获取协议 实现方式
PowerWatts 带外管理 std_smbus 代码实现
  • 使用华为自研 SMBus 协议从 NPU 卡的 MCU 获取实时功耗数据。
  • 若 SMBus 通信短暂中断或 MCU 返回无效值,则 PowerWatts 可能读取为0。

2. 压测导致通信资源竞争

在长时间、高负载的压力测试(如 ascend-dmi 持续运行)过程中:

  • 主机端频繁访问 NPU 资源。
  • 带外管理通道(BMC ↔ NPU MCU)可能因总线抢占、响应延迟等原因出现瞬时通信失败。
  • 导致一次读取超时或返回异常数值(如0),满足告警触发条件。

3. 历史问题佐证

  • 多个知识库文档指出,Atlas 300I A2 卡存在通信协议支持更新不及时的问题(“compute component not updated”)。
  • 曾有报告提及该卡在驱动未正确加载时,温度与功耗数据读取异常。

解决方案与建议

:white_check_mark: 短期缓解措施

1. 调整告警防抖策略

在不降低系统可靠性的前提下,对 Event_InspectFail 类事件增加持续防抖机制(contbin_HxLx),避免瞬时毛刺触发告警。

"Event_InspectFail_01010509": {
    "trigger_logic": "expr(...)",
    "debounce": "contbin_H3L3",  // 至少连续3次异常才告警
    "description": "PCIe card inspection failed"
}

推荐使用 contbin_H3L3 或更高级别防抖,防止短暂通信波动引发告警。

2. 排查固件兼容性

检查 Atlas 300I A2(32G) 卡的以下版本是否为最新稳定版:

组件 获取路径 建议版本
System Firmware Version FirmwareVersion 7.7.0.6.236
MCU Firmware Version McuFirmwareVersion 25.53.33

可参考日志与实际部署版本比对,确保固件一致性。


:white_check_mark: 长期解决方案

1. 增强带外通信健壮性

  • compute 组件中优化 SMBus 重试机制,在通信失败时进行多次重试而非直接返回0。
  • 增加异常值过滤机制,若 PowerWatts 返回0但设备仍在位、未报故障,则认为是无效读数,维持上次有效值或标记为“未知”。

2. 完善硬件适配

确保 CSR 配置文件中的 NPUCard 定义完整且与实际设备一致。

示例正确配置:

"NPUCard_1": {
    "Name": "Atlas 300I A2(32G) Inference Card",
    "Manufacturer": "Huawei",
    "Model": "Atlas_300I_A2",
    "PartNumber": "02314RAL",
    "PowerWatts": "<std_smbus_get_power>"
}

并确认 CSR 文件中不存在 ECCAlarmState 与 DiagnosticFault 的属性不一致问题(见 GitCode 提交记录)。

3. 日志增强建议

  • 增加 PowerWatts 读取失败的具体原因日志(如 “SMBus timeout”, “Invalid response”)。
  • 记录每次 Event_InspectFail 触发时的原始 FaultStatePowerWatts 值,便于事后分析。

总结

项目 结论
告警类型 瞬时性通信异常导致的误报
根本原因 PowerWatts 属性在压测中短暂返回0或读取失败
触发逻辑 Event_InspectFail 检查 FaultStatePowerWatts 组合状态
解决方向 优化通信重试 + 增加防抖机制 + 升级固件/CSR

:loudspeaker: 建议优先实施防抖策略与通信稳定性优化,以消除压测过程中的偶发告警,提升系统监控可信度。


参考资料来源

  • 硬件兼容性列表
  • compute 组件说明文档
  • openUBMC 告警机制设计
  • Atlas 300I A2 相关 CSR 配置与日志分析

“Event_InspectFail”: {
“EventKeyId”: “PcieCard.PCIeCardInspectionFailure”,
“Reading”: “<=/NPUCard_1.FaultState;<=/NPUCard_1.PowerWatts |> expr((($1 & 4) == 0) && (($2 & 32768) == 0) ? 0 : 1)”,
“Condition”: 0,
“OperatorId”: 6,
“AdditionalInfo”: “2”,
“Component”: “#/Component_PCIeCard”,
“DescArg2”: “#/PCIeDevice_1.SlotID”,
“DescArg3”: “#/PCIeCard_1.BoardName”
}

这个告警是根据卡侧上报的错误码告警的,需要定位卡侧的原因。

卡那边怎么定位呢?收集os侧日志发给哪位大佬帮忙看看?

收集os侧的日志发送到邮箱
zhangzhiyang22@huawei.com

邮件已收集日志发送,请查阅

看下联系卡侧的定位下

卡那边说没问题,卡返回的powerwatts不会超过32767,但是我收到的值是65535,这个还得bmc这边帮忙看下数据源是什么

带上这个修改在试下

这个修改和误告警有啥关联吗,没确认清楚根因