麒麟OS开机慢时,可用systemd-analyze精准定位瓶颈:一、用time查kernel/initrd/userspace三阶段耗时;二、用blame找耗时最长unit;三、用critical-chain分析阻塞依赖链;四、用plot生成SVG时序图;五、用journalctl -b -u查具体服务日志。

如果您在麒麟OS上发现开机时间明显偏长,需要定位拖慢启动的具体环节,则可借助系统内置的 systemd-analyze 工具进行精确测量与分析。以下是具体操作步骤:
一、查看整体启动耗时
systemd-analyze time 命令用于获取从固件加载完成到用户空间服务就绪的全链路耗时,结果分为 kernel、initrd 和 userspace 三阶段,其中 userspace 阶段反映 systemd 管理的服务启动总开销,是优化重点。
1、打开终端,执行:systemd-analyze time
2、观察输出中 Startup finished in X.XXXs (kernel) + Y.YYYs (initrd) + Z.ZZZs (userspace) 的数值构成。
3、若 userspace 耗时显著高于 kernel 与 initrd 之和,说明服务初始化存在瓶颈。
二、识别最耗时的启动单元
systemd-analyze blame 按实际启动耗时倒序列出所有已激活 unit(含 service、mount、device 等),便于快速锁定拖慢启动的“元凶”,尤其关注耗时超过 1 秒的条目。
1、在终端中运行:systemd-analyze blame --no-pager
2、查找排在前列的服务,例如:NetworkManager-wait-online.service、sendmail.service 或 docker.service。
3、记录前五名耗时单位名称及对应毫秒值,作为后续优化依据。
三、分析关键依赖路径
critical-chain 命令揭示决定整体启动时长的最长服务依赖链,即从 default.target 或 multi-user.target 向上回溯的串行阻塞路径,该路径上的任一延迟都会直接延长总启动时间。
1、执行命令:systemd-analyze critical-chain
2、检查输出中是否出现 NetworkManager-wait-online.service 或 systemd-networkd-wait-online.service 位于链条中段或末端。
3、若某服务显示耗时远高于其自身 blame 数值,说明其上游依赖存在等待超时或失败重试行为。
四、生成可视化启动时序图
plot 命令将整个启动过程导出为 SVG 格式时间线图,支持直观识别并行启动区间、空闲等待间隙以及异常拉长的单个服务块,适用于多人协作排查与归档分析。
1、执行:systemd-analyze plot > boot-time.svg
2、使用浏览器打开生成的 boot-time.svg 文件。
3、观察图中是否存在横向延伸过长的色块(如持续数秒的红色或黄色矩形),或其前方存在大面积空白区域(表示同步等待)。
五、验证特定服务日志与状态
journalctl -b -u 可调取当前启动会话中指定 unit 的完整日志流,用于确认服务是否因超时、权限拒绝、配置缺失或依赖未就绪而卡顿,是 blame 与 critical-chain 的必要补充手段。
1、针对高耗时服务,例如:journalctl -b -u NetworkManager-wait-online.service
2、在日志末尾查找关键词:timeout、failed to start、waiting for 或 not ready。
3、若发现重复重试或长时间无输出,表明该服务处于挂起状态,需结合其 unit 文件进一步审查 After=、Wants= 和 BindsTo= 设置。

















