AC测试出现一圈power_mgmt组件启动过慢

问题描述

跑AC测试时,出现1次系统下获取电源信息异常问题(该信息是BIOS从BMC获取的)。

分析日志发现,出现异常这一次,power_mgmt 组件启动时间很慢,BMC启动约146s后power_mgmt 才启动,所以BMC获取到电源信息的时间太久,BIOS自动上电后就获取不到。
而正常情况下,power_mgmt 组件启动时间大约在70s。

BMC版本:2512 LTS SP1

参考以下日志,异常启动时间点:06:34:16
dump_info.tar.gz (9.9 MB)

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

总结

本次AC测试中出现的电源信息获取异常,根本原因是 power_mgmt组件启动延迟至BMC启动后146秒,远超正常的70秒,导致BIOS在启动初期无法及时从BMC获取所需电源数据

此问题暴露了系统在启动时序协同方面的薄弱环节,建议结合服务启动优化BIOS端容错机制双重手段解决,以提升系统在频繁AC重启场景下的稳定性与可靠性。

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

AC测试中power_mgmt组件启动过慢导致电源信息获取异常分析

在执行AC(交流电源)测试过程中,出现了一次系统无法正常获取电源信息的问题。该问题是由于power_mgmt组件启动延迟,导致BIOS在尝试从BMC获取电源信息时,相关服务尚未就绪所致。

问题现象

  • 执行AC测试期间,1次出现系统上电后无法获取电源信息的情况。
  • 电源信息由BIOS通过BMC获取(通常经由IPMI或D-Bus接口调用GetPowerSupplyInfo等方法)。
  • 异常发生时,power_mgmt组件启动时间严重延迟。
  • 正常与异常情况对比:
    • 正常情况power_mgmt组件在BMC启动后约 70秒 内完成初始化。
    • 异常情况power_mgmt组件在BMC启动后 146秒 才启动。

根因分析

启动时序不匹配

  • 在AC上电后,BIOS启动速度快于BMC系统服务的准备就绪时间
  • 当BIOS尝试通过BMC的GetPowerSupplyInfo等接口获取电源信息时,power_mgmt组件仍在初始化过程中(或尚未启动),导致请求失败或超时。
  • 日志时间点显示:问题出现在 06:34:16,此时power_mgmt刚刚启动,而此前已有BIOS信息查询请求被发出但无响应。

涉及关键组件与流程

组件/服务 角色 相关性
power_mgmt 电源管理核心服务,负责提供电源信息(如电压、电流、型号等) 直接责任组件,启动过慢
GetPowerSupplyInfo 提供电源信息查询的API,由openUBMC实现 接口依赖于power_mgmt运行
BMC 基板管理控制器,协调硬件监控和远程管理功能 容器环境,power_mgmt在其之上运行
BIOS 系统固件,在启动初期需获取电源状态和硬件信息 请求方,因服务未就绪而获取失败

背景知识支持

  • 根据知识库文档,power_mgmt负责:
    • 获取电源FRU信息(制造商、型号、序列号等)
    • 监控电压、电流、功率、温度
    • 处理电源告警和事件(如AC掉电)
  • GetPowerSupplyInfo命令由openUBMC提供接口,用于向BIOS或其他上层组件暴露电源数据。
  • 存在已知类似问题:“AC后与BIOS交互的信息概率性获取不到”,其根本原因也指向 BMC服务启动慢、BIOS上报过早

问题复现条件

  • 条件:执行AC cycling(反复断电再上电)测试
  • 触发场景:power_mgmt组件由于某种原因启动延迟(可能与存储加载、依赖服务、资源竞争有关)
  • 结果:BIOS在自动上电阶段调用IPMI命令获取电源信息时,BMC端无响应或返回错误

注:尽管只出现1次,但说明系统在启动时序上存在潜在风险,尤其在边缘条件下(如冷启动、存储慢、组件加载不一致)可能再次触发。


解决建议

短期缓解措施

  1. 在BIOS侧增加重试机制
    • 若首次获取GetPowerSupplyInfo失败,延迟几秒后重试,避免因短暂服务未就绪而丢弃信息。
  2. 调整BMC内部组件启动优先级
    • power_mgmt设为高优先级组件,优先于非关键服务启动,确保关键信息尽早可用。

长期优化方向

  1. 优化power_mgmt启动性能
    • 分析其146秒启动的具体原因(是否涉及数据库写入失败、设备树扫描慢、依赖等待等),参考类似issue(如power_mgmt 修复组件启动时写数据库失败导致启动失败)进行加固。
  2. 引入健康就绪状态通知机制
    • power_mgmt完成初始化后,主动通知BIOS或事件总线,触发信息重新上报。
  3. 调整“保持上电”策略下的启动顺序
    • fructrl等控制模块中引入延时或依赖判断逻辑,确保关键服务准备就绪后再允许BIOS查询。

参考信息来源

  • 知识图谱实体
    • power_mgmt:电源管理组件,负责获取和提供电源信息
    • GetPowerSupplyInfo:获取电源信息的API
    • BMC:承载power_mgmt运行的管理控制器
  • 文档块 #2 & #9
    • 明确说明power_mgmt的功能及在openUBMC架构中的位置
    • 提供了组件职责与接口行为依据
  • 历史问题单(文档块 #6#2
    • 曾有过“power_mgmt 组件启动时写数据库失败导致启动失败”的问题,表明该组件对初始化环境敏感

总结

本次AC测试中出现的电源信息获取异常,根本原因是 power_mgmt组件启动延迟至BMC启动后146秒,远超正常的70秒,导致BIOS在启动初期无法及时从BMC获取所需电源数据

此问题暴露了系统在启动时序协同方面的薄弱环节,建议结合服务启动优化BIOS端容错机制双重手段解决,以提升系统在频繁AC重启场景下的稳定性与可靠性。

又复现到一次,power_mgmt 组件启动最慢,energy进程下的其他组件和 power_mgmt 组件启动的时间相差很大。

这个问题现象是bios获取不到电源信息吗

是的

是获取电源信息个数为0吗,还是获取少了