四电源环境下重启 BMC,概率性出现电源冗余丢失告警

问题描述

环境搭载四电源,做长时间 BMC 重启测试,概率性出现电源冗余丢失告警,丢失后 1s 恢复,概率 2/100

初步定位,怀疑是模块间启动时序问题

可以看到,电源的 OnePower 对象还是逐个加载上树,电源冗余告警就告了出来,待到 OnePower 对象加载完成后告警消失,怀疑是 power_strategy 太早开始监听冗余告警,没有等到 BMC 完全启动完成,涉及闭源模块,请帮忙确认机制及问题原因

环境信息

社区 330 基线

答案内容由AI生成,仅供参考:
好的,根据您提供的问题描述、日志信息以及知识库中的相关内容,我对该问题进行分析和解答。

问题根因分析

您所遇到的在四电源环境下BMC重启后概率性出现电源冗余丢失告警的问题,根因与您的初步定位一致,即 power_strategy 模块的启动时序问题。具体来说,是模块间初始化顺序不当导致的“假阳性”冗余告警。

根据知识库中《冷复位BMC产生电源冗余告警问题分析》文档的分析,该问题的核心机制如下:

  1. RedundancyFailure 标志位过早置位:在 BMC 启动过程中,power_strategy 模块的 energy_metric.lua 组件在未等待所有电源 (OnePower) 对象完全加载并上报稳定状态之前,就过早地将冗余状态标志 RedundancyFailure 设置为 true。这在日志中第 13140 行 得到印证:Set RedundancyFailure to true

  2. OnePower 对象逐个上树:从日志的第 12915行13252行 可以看出,四个电源的 OnePower 对象是逐个被添加到资源树上的,这个过程持续了超过13秒。

  3. 告警触发逻辑

    • 告警事件 PSURedundancyLost_01010A 的触发条件是 RedundancyFailure 的值 <= 1。由于 RedundancyFailure 是布尔值,true 即为1。
    • RedundancyFailure 被设置为 true 时,1 <= 1 条件成立,告警立刻被触发。
    • 从日志看,RedundancyFailure05:56:20 被置为 true,而 energy_metric.lua 的告警检查功能在 05:56:20 开始生效,这导致了告警的立即产生(日志 13358行 记录的事件确认了这一点)。
  4. 告警恢复:直到 05:56:25energy_metric.lua 才将 RedundancyFailure 设置为 false(日志第 13266行),告警随即解除。这与您描述的“丢失后 1s 恢复”现象略有出入,实际冗余失效状态持续了约 5秒,而告警的AssertedDeasserted事件相隔1秒,可能是因为事件轮询周期或日志时间戳精度差异。

总结: 问题的根本原因是 power_strategy 模块在 BMC 启动的早期阶段,未等待所有 OnePower 对象初始化完成并上报PSU状态,就提前将 RedundancyFailure 标志置为 true,导致在 OnePower 对象加载完成前错误地触发了电源冗余丢失告警。

解决方案建议

根据知识库中提供的分析,解决此问题的核心思路是延迟冗余状态的判断时机。建议的解决方案如下:

  1. 延迟 RedundancyFailure 置位逻辑

    • power_strategy 模块中 Set RedundancyFailure to true 的逻辑执行时机,从当前的启动早期,推迟到所有 OnePower 对象加载完成并稳定上报状态之后
    • 可以通过监听 OnePower 模块的初始化完成信号OnePower.Status 接口属性就绪的事件来实现。只有当所有预期的 OnePower 对象都出现在资源树上,并且其 OutputStateHealth 等关键状态正常时,才执行冗余状态检查。
  2. 优化 OnePower 对象加载顺序或机制

    • 尽管日志显示对象是逐个加载的,但可以考虑优化 OnePower 对象的加载并行度,或为 PSU 的初始化分配更高的优先级,使其在 power_strategy 开始工作前完成。
  3. 考虑增加防抖机制

    • 在冗余状态的判断逻辑中加入防抖 (Hysteresis) 机制。例如,仅在 RedundancyFailure 连续为 true 超过一定时间(如 5-10秒)后,才触发告警。目前 Event_PSURedundancyLost_01010A 的 Hysteresis 为0,没有任何过滤,导致短暂的 true 状态也会触发告警。

由于您提到 power_strategy 涉及闭源模块,您可以将上述分析和对齐方案反馈给负责该模块的团队,请求他们按照“在 OnePower 模块全部加载完成后,再进行冗余状态判断”的思路进行修复。

涉及的一键收集

dump_info.zip (7.8 MB)