lihang111
(TTY lihang)
1
问题描述
跑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次,但说明系统在启动时序上存在潜在风险,尤其在边缘条件下(如冷启动、存储慢、组件加载不一致)可能再次触发。
解决建议
短期缓解措施
- 在BIOS侧增加重试机制
- 若首次获取
GetPowerSupplyInfo失败,延迟几秒后重试,避免因短暂服务未就绪而丢弃信息。
- 调整BMC内部组件启动优先级
- 将
power_mgmt设为高优先级组件,优先于非关键服务启动,确保关键信息尽早可用。
长期优化方向
- 优化
power_mgmt启动性能
- 分析其146秒启动的具体原因(是否涉及数据库写入失败、设备树扫描慢、依赖等待等),参考类似issue(如
power_mgmt 修复组件启动时写数据库失败导致启动失败)进行加固。
- 引入健康就绪状态通知机制
power_mgmt完成初始化后,主动通知BIOS或事件总线,触发信息重新上报。
- 调整“保持上电”策略下的启动顺序
- 在
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重启场景下的稳定性与可靠性。
lihang111
(TTY lihang)
3
又复现到一次,power_mgmt 组件启动最慢,energy进程下的其他组件和 power_mgmt 组件启动的时间相差很大。