LTS SP2版本BMC启动时间不满足<2min

问题背景

版本:2512LTS SP2
操作步骤
1、执行ipmcset -d reset,记下时间T0
2、记录SSH、IPMI、Web、Redfish可以访问的时间点T1、T2、T3、T4
3、相减得到BMC复位场景的启动时间
测试结果

第 1 列 第 2 列 第 3 列 第 4 列 第 5 列
复位时间 SSH(单位秒) IPMI(单位秒) Web(单位秒) Redfish(单位秒)
第一次 142.6 169.99 170.27 175.2
第二次 140.71 170.51 177.07 175.39
第三次 140.81 169.77 170.98 170.1
第四次 144.92 166.54 178.08 170.81
平均值 142.26 169.2 174.1 172.88
结果分析
根据QA/Test_Guide/openUBMC SIT DFX测试指导.md · openUBMC/QA - AtomGit


即便扣除BMC GracefulReset stop阶段的时间(从framework.log可以得知大概在17秒左右)也是超过2min的

初步分析

2026-07-16 05:30:13.600102 maca NOTICE: init.lua(413): GracefulReset begin
2026-07-16 05:30:30.046514 maca NOTICE: init.lua(100): stop watchdog timer
1970-01-01 00:00:27.005196 [:00000002] unknown: KILL self
1970-01-01 00:00:43.989936 [:00000002] framework: KILL self
1970-01-01 00:00:54.003227 [:00000002] security: KILL self
1970-01-01 00:00:54.395449 [:00000002] alarm: KILL self
2026-07-16 05:31:53.519175 [:00000002] hardware: KILL self
2026-07-16 05:31:53.869485 [:00000002] energy: KILL self
2026-07-16 05:31:56.227285 [:00000002] om_priv: KILL self
2026-07-16 05:32:05.018925 [:00000002] bmc_core: KILL self
2026-07-16 05:32:05.539999 [:00000002] ras: KILL self
2026-07-16 05:32:08.069898 [:00000002] om: KILL self
2026-07-16 05:32:17.783498 [:00000013] bmc_core: KILL self
2026-07-16 05:32:22.979836 [:00000002] interface: KILL self

从framework.log来看05:30:30开始启动,不知道这些’KILL self’的打印是否是正常的

2026-07-16 05:33:12.319982 ipmi_core NOTICE: ipmi_core_app.lua(293): init default ipmi command task finished

从app.log.1可以看到05:33:12 IPMI才完成启动,与前面的测试数据基本一致,其他三个接口不知道怎么确定完成启动时间

答案内容由AI生成,仅供参考:
根据您提供的回答内容,文中没有明确标有“问题总结”或“结论”等字样的章节,因此返回空内容。

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

根据您提供的上下文信息,以下是对 LTS SP2 版本 BMC 启动时间超 2 分钟问题的分析,以及关于日志中 “KILL self” 是否正常、各接口启动时间点如何确定的说明。所有结论均严格来源于给定的 Context,未引入外部知识。


1. 关于 “KILL self” 日志是否正常

您的日志片段:

1970-01-01 00:00:27.005196 [:00000002] unknown: KILL self
1970-01-01 00:00:43.989936 [:00000002] framework: KILL self
1970-01-01 00:00:54.003227 [:00000002] security: KILL self
... (2026-07-16 05:31:53 开始又有 KILL self)

从上下文中的 Search Result 9 可知,在异常场景下(长时间 AC 测试),子系统会循环重启,bmc_core 和 security 持续 “kill self” 和启动,这种情况是异常的。
而在您的日志中,每个组件(unknown、framework、security、alarm、hardware、energy、om_priv、bmc_core、ras、om、interface)仅出现一次 KILL self(bmc_core 出现两次),没有出现明显循环重启。

结合 Knowledge Graph 中对 GracefulReset 的描述

GracefulReset is a controlled reboot mechanism for the BMC that allows components to shut down safely. (GracefulReset 是一种受控重启机制,允许组件安全关闭。)

可以认为,GracefulReset 过程中框架会依次终止各个组件,产生单次 KILL self 是预期的正常行为
但是,需要进一步检查 framework.log 中是否有组件启动失败的记录(如 init service failedobject_register failed 等)。若存在这类失败,则可能导致启动阶段延长,甚至触发 BMC 再次恢复性重启(参考 Document Chunk 1 中的描述:some service failed to start, and BMC will attempt to restart for recovery)。


2. 启动时间超 2 分钟的初步原因定位

2.1 对比性能指标

上下文并未给出统一的启动时间性能指标,但在 Search Result 1(MACA 问题定位方法) 中提到:

iBMC 从复位到完成时间超过性能指标要求,预期 180s,实际 703.96s。

您测试的平均复位时间为 142.26s(SSH),扣除 GracefulReset stop 阶段的 ~17s 后仍在 ~125s,确实超过 2 分钟(120s)。
虽然您的数据低于上述 180s 指标,但若贵团队内部标准为 <2min,则需要排查是否有组件异常导致延迟。

2.2 平滑重启失败的潜在影响

根据 Search Result 1

平滑重启先通知组件重启准备,如果有组件重启准备失败,则通知组件取消重启并返回失败;否则返回成功通知组件执行重启,由框架主程序完成重启。

如果 某个组件的 Prepare 阶段失败,平滑重启可能回退或转为强制重启,增加耗时。
建议您检查 framework.log 中的 组件重启准备相关日志(例如在 GracefulReset 前后是否出现 Prepare failedCancel 信息),以确定是否有组件未正常响应。

2.3 组件启动状态检测

Search Result 6(微组件管理介绍) 说明:

如果在一个组件的六次启动状态检测中,组件的启动状态始终为 starting,就会被认为组件启动失败。

若在启动过程中有组件长时间无法达到 InitCompleted,也会导致整体启动时间延长。
可结合 app.log(如 ipmi_core app.log.1)查找是否有组件超时失败的记录。

2.4 1970 年时间戳的影响

您的日志中出现 1970-01-01 00:00:27 等时间,这通常是 BMC 复位后系统时钟未同步 的表现(BMC 默认时间1970)。
Knowledge Graph 中“Zhangbaocun”提到

BMC synchronizes its time from the RTC every 6 seconds and the BMC’s default time is set to 1970 and cannot be configured.

因此,在启动初期日志时间不准确(但后续时间恢复正常),对实际启动时间计算影响有限,但可能会影响日志分析的精确性。


3. 如何确定各接口启动完成时间点

您已通过记录 SSH、IPMI、Web、Redfish 可访问的时间点来测量启动时间。从上下文看,可以从日志中获取更精确的时间戳

  • IPMI:您的 app.log.1 中显示 2026-07-16 05:33:12.319982 ipmi_core NOTICE: init default ipmi command task finished,这即为 IPMI 服务启动完成的标志。
  • 其他接口(SSH、Web、Redfish):可通过对应服务(dropbear/sshd、nginx、bmcweb)的启动完成日志确定。例如,在 framework.log 或各服务的 app.log 中搜索服务启动完成的关键字(如 sshd: Server listeningnginx: start worker processesbmcweb: started)。上下文并未给出精确关键字,但可以依据类似方法在日志中查找。
  • 也可直接使用您现有的方法(SSH 可达等)作为整体可用性判定,但若需要更精细的测量,建议结合各服务的内部启动日志。

4. 建议的后续排查方向

  1. 检查组件是否有启动失败:在 framework.log 中搜索 init service failedobject_register failedendless loop 等关键字(参考 Document Chunk 1)。
  2. 检查 GracefulReset 的 Prepare 阶段:确认是否有组件准备失败导致平滑重启降级为强制重启(参考 Search Result 1)。
  3. 确认是否存在子系统循环重启:若多次出现相同组件的 KILL selfLAUNCH(间隔很短),则属于异常循环,需优先定位(参考 Search Result 9)。
  4. 查看各组件启动状态检测日志:在 framework.log 中搜索 start to check statusInitCompleted 等,确认是否有组件长期处于 starting 状态(参考 Search Result 6)。
  5. 对比正常环境的日志:若有可能,在相同硬件上用基线版本做一次对比启动,定位差异点。

总结

  • 您的日志中 单次 KILL self 属于 GracefulReset 过程中的正常组件关闭行为,但需排除后续的组件启动失败或循环重启。
  • 启动时间超 2 分钟 可能由平滑重启阶段组件准备失败、部分组件启动超时、或硬件初始化延迟引起。
  • 可通过 组件服务日志中的启动完成标志 精确确定各接口的启动时间。

以上分析完全基于提供的 Context(Knowledge Graph、Document Chunks、Search Result)。若日志中有更具体异常信息,可以进一步结合上下文定位。

192.169.2.56硬件性能测试.tar.gz (8.9 MB)
补充一下一键日志

Kill self日志是系统进入退出流程正常打印

可是启动阶段为什么会进入退出流程

确实启动时间比较慢,差不多3分钟了