首页/系统/信创系统运维速查/systemd-analyze 启动耗时分析
服务与运维65 条

systemd-analyze 启动耗时分析

量化开机时间:time 看固件引导、内核、用户态三段分解;blame 列出耗时靠前的单元;critical-chain 展开关键路径,三者结合定位启动瓶颈。

信创系统运维速查系统更新于 2026-10-13

启动耗时怎么看

systemd-analyze 用来量化开机时间:time 把总时长拆成固件、引导加载器、内核与用户态四段;blame 按耗时排序列出各单元;critical-chain 展示关键路径上的依赖链;plot 生成时间轴图。三者结合才能定位真正的启动瓶颈,适用于所有 systemd 发行版。

基本信息

总览systemd-analyze time
排序systemd-analyze blame
关键链systemd-analyze critical-chain
图形systemd-analyze plot > /tmp/boot.svg
校验systemd-analyze verify <单元>

典型使用场景

  • 开机时间变长,定位是哪一阶段拖慢
  • 裁剪多余服务前评估各单元的实际开销
  • 交付验收时给出量化的开机时间数据
  • 排查某服务能否正常启动,用 verify 做静态校验
  • 对比两次重启数据,确认优化是否有效

分析命令

分析命令
systemd-analyze time                     # 各阶段耗时总览
systemd-analyze blame | head -20         # 按耗时排序的单元清单
systemd-analyze critical-chain | head -30   # 关键路径与阻塞点
systemd-analyze plot > /tmp/boot.svg     # 生成启动时间轴图
systemd-analyze verify /etc/systemd/system/myapp.service   # 单元语法与引用校验
journalctl -b -o short-monotonic | head -20   # 结合日志看时间顺序

子命令对照

子命令输出内容用途
time各阶段耗时分解先判断瓶颈在固件还是用户态
blame按耗时排序的单元找候选优化对象
critical-chain关键路径依赖链确认真正的阻塞点
plot启动时间轴图向他人展示与复盘
verify单元文件校验改配置后做静态检查
blame 的数值包含等待依赖的时间,排在前面的单元不一定自身慢;要判断真实瓶颈应结合 critical-chain 看关键路径。
对比数据要在相近条件下采集:长期未重启的机器数据参考价值低,先安排在业务低峰做一次重启再测量。

常见拖慢项

  • 网络等待:等待链路就绪的目标耗时较长
  • 云初始化:云平台代理服务启动慢
  • 文件系统检查:大容量分区自检耗时
  • 固件阶段:主板与带外管理初始化偏慢
  • 串行依赖:多个单元按顺序等待

易错点

  • 把 blame 排序当成优化清单:数值含等待时间,先排除串行等待再做裁剪
  • 忽略并发启动特性:多个单元耗时相加并不等于总时长,判断要以关键路径为准
  • 为缩短开机时间直接禁用组件:网络等待、文件系统检查与云初始化往往有实际作用,裁剪前确认影响
  • 在虚拟化与云主机上直接与物理机数据对比:环境差异会让结论失真
  • 为提速直接屏蔽网络就绪目标:依赖网络的服务可能在链路可用前启动并失败

数据来源与参考

  • man 1 systemd-analyze
  • openEuler 文档:启动性能分析
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌