问题描述
AC压测过程中,通电开机策略为保持上电,偶现服务器不上电
环境信息
软件版本: OpenUBMC2512 LTS SP1
重现步骤
AC操作
期望结果
AC后BMC正常给服务器上电
实际结果
AC后服务器未上电
分析结论
1.分析日志发现AC后BMC存在组件未拉起导致复位
2.framwork.log显示certificate组件拉起异常
3.分析未上电原因为AC后走通电开机策略,保持上电,下发上电通知给其他组件,当前服务器有DPU,添加了上电锁,在DPU OS启动完成后,释放上电锁时,正好遇到BMC maca进行BMC复位,导致未进行正式上电;maca将BMC复位后,fructrl读到的rest_type为softreset,所以未走通电开机策略
答案内容由AI生成,仅供参考:
结论
本次AC压测服务器不上电的根本原因在于:
BMC关键组件(certificate)启动失败 → 触发BMC软复位 → 复位类型误判为SoftReset → fructrl跳过通电开机策略 → 服务器未上电
解决路径 :
短期 :优化启动时序,增加延时,规避竞态。
中期 :修复组件启动问题。
长期 :统一BMC复位类型识别机制 ,确保AC场景下策略正确执行。
建议推动社区或内部团队完成 ResetType 公共属性的落地,从根本上避免此类问题复发。
点击此处查看详细分析解答
AC压测中通电开机策略失效问题分析与解决方案
在对服务器进行AC(交流电源)压测时,即使将通电开机策略 配置为“保持上电 ”,仍偶发服务器无法正常上电的问题。经日志分析,该问题与BMC系统内部组件启动异常和复位类型判断错误密切相关。以下为详细分析与解决方案。
问题概述
问题分析
结合系统日志(SEL、framework.log等),确认问题发生过程如下:
1. BMC组件启动失败导致自动复位
日志证据 :
14810 -05-09 14:32:46.948524 maca ERROR: [certificate]StartupCheck failed, status: Starting, check count: 5
...
14831 -05-09 14:32:52.943892 maca NOTICE: Force Reset begin
分析 :
BMC的 maca(模块化启动控制器代理) 组件在启动过程中检测到 certificate 组件初始化未完成 ,经过多次检查仍失败,触发BMC主动复位 以尝试恢复。
根本原因 :
certificate 组件启动超时,可能与服务依赖延迟 或初始化死锁 有关,最终导致BMC系统重启。
2. BMC复位类型被误判为 SoftReset
3. 上电锁(Power-On Lock)释放时序冲突
关键上下文 :
该服务器配备 DPU(如Zijin-DPU) ,其操作系统启动较慢。
为确保DPU完全启动后再进行主机OS上电,系统设置了上电锁 。
DPU OS启动完成后(日志显示“DPU OS is started”),释放上电锁,通知BMC可以上电 。
问题触发点 :
在上电锁即将释放时,BMC因certificate组件启动失败,触发了强制复位(Force Reset) 。
复位发生后,fructrl因识别为 SoftReset ,不再执行通电开机策略。
最终导致:虽然允许上电,但BMC未发起上电命令 。
影响链总结
graph TD
A[AC Power Loss] --> B[AC恢复]
B --> C[BMC启动, maca检查组件状态]
C --> D[certificate组件启动失败]
D --> E[maca触发BMC强制复位]
E --> F[BMC复位类型被记录为SoftReset]
F --> G[fructrl检测到SoftReset]
G --> H[跳过通电开机策略]
H --> I[服务器未上电]
解决方案
1. 修复证书组件启动问题(根因)
排查 certificate 组件延迟原因 :
检查其依赖服务(如 spdm、iam、DBUS)是否启动过慢或失败。
增加启动超时时间或优化初始化逻辑。
建议 :
在 init.lua 中为 certificate 添加更详细的日志,定位卡住阶段。
检查是否因证书文件缺失 、TPM/HSM未就绪 或网络服务阻塞 导致。
2. 修正复位类型判断逻辑(关键修复)
3. 优化上电锁机制与DPU协同
问题 :上电锁释放与BMC复位存在竞态条件。
建议改进 :
上电锁释放前,先确认BMC处于稳定状态 (所有核心组件已启动)。
或由DPU主动发起“请求上电 ”命令,而非仅依赖BMC自动策略。
4. 增加延时以避免组件未就绪
参考案例 :
在 fructrl 执行通电开机策略前,增加固定延时(如5~10秒) ,确保 certificate、iam 等关键服务已启动。
配置建议 :
# 在通电开机策略中增加延迟
SetPowerOnStrategyExceptions(Reason=AC, Execute=DelayedPowerOn, EffectivePeriod=60s, Delay=8s)
验证方法
修改代码后重新压测 :
检查SEL日志 :
确认BMC复位原因是否正确记录为 AC Reset。
确认通电开机策略是否被触发。
抓取组件启动时间 :
统计 certificate、iam、fructrl 等组件的启动耗时,评估稳定性。
参考资料
fructrl 通电开机策略实现逻辑 (社区文档)
【ISSUE】fructrl组件获取reset type错误 (复位类型识别问题)
【提案】新增 BmcReset.ResetType 公共属性 (解决复位类型不一致)
AC后与BIOS交互的信息概率性获取不到 (启动时序问题)
结论
本次AC压测服务器不上电的根本原因在于:
BMC关键组件(certificate)启动失败 → 触发BMC软复位 → 复位类型误判为SoftReset → fructrl跳过通电开机策略 → 服务器未上电
解决路径 :
短期 :优化启动时序,增加延时,规避竞态。
中期 :修复组件启动问题。
长期 :统一BMC复位类型识别机制 ,确保AC场景下策略正确执行。
建议推动社区或内部团队完成 ResetType 公共属性的落地,从根本上避免此类问题复发。
grlxw
(xijie)
2026 年5 月 11 日 02:27
4
此处上下电的行为正常,原因实际是有组件启动异常了,需要分析下certificate组件启动异常的问题
Larry_Li
(LiJiang)
2026 年5 月 12 日 12:07
5
看了下日志里面的组件版本, 部分组件版本如下:
capability_proxy/1.80.11@openubmc/stable
account/1.100.10@openubmc/stable
这些版本不是OpenUBMC2512 LTS 或 OpenUBMC2512 LTS SP1 里面的组件版本。
请升级到LTS版本。
25.12 之前的版本已经EOS, 参考生命周期
Larry_Li
(LiJiang)
2026 年5 月 13 日 03:03
7
嗯,看错日志了。 我再分析看下, 日志显示报错
2026-05-09 14:32:44.500945 certificate ERROR: [C](65535): [WSEC_CBB][][208] (UTC) 2026-05-09 06:32:44 KMC is running, not initialize repeatedly before finalized.