systemd-analyze time 直接显示 kernel、initrd、userspace 三阶段耗时,分别对应内核启动、initramfs 执行和 systemd 服务加载;blame --all --no-pager 揭示真实瓶颈(如 activating .mount 单元);critical-chain 展示最长依赖路径,需结合 blame 判断真因;plot 生成 SVG 时序图辅助分析。

Linux怎么查看系统启动耗时

直接运行 systemd-analyze time 就能知道总耗时和瓶颈在哪一阶段,不用猜、不用装额外工具。

看三阶段耗时分布用 systemd-analyze time

它输出类似 Startup finished in 718ms (kernel) + 1.713s (initrd) + 17.079s (userspace) = 19.511s,这三个值是连续阶段,不是并列:

注意:systemd-analyze time 不包含 BIOS/UEFI 自检、GRUB 菜单停留、内核解压等前置时间,只反映 systemd 接管后的可测部分。

找“表面最慢”服务用 systemd-analyze blame --all --no-pager

systemd-analyze blame默认仅会列出状态为active的service和mount单元,然而,真正导致启动缓慢的,常常是那些处于activating状态或者直接failed.mount单元(比如/etc/fstab中写入了已拔掉的USB盘、不可达的NFS地址等情况)。

查真实依赖瓶颈用 systemd-analyze critical-chain

systemd-analyze critical-chain所呈现的,是从启动起点到default.target(或者graphical.target)的最长依赖链。要知道,这里每一步所显示的时间,指的是“该unit自身启动所花费的时间”,并不包括其上游等待的时间。这一点很容易让人产生误解,以为是这个环节慢所以需要优化它,可实际上呢,它本身可能启动得很快,只是被上游给卡住了。

生成可视化时序图用 systemd-analyze plot

systemd-analyze plot > boot.svg 可导出 SVG 格式的启动时序图,直观展示服务依赖与并行/串行关系。图中横向为时间轴,每条色块代表一个 unit 的启动过程,重叠表示并行启动,空隙反映等待依赖。

真正卡住启动的单元,往往藏在 blame --all 里,尤其是卡在 activating 状态的 .mount 单元——它们不会出现在默认 blame 列表里,却会把整条关键路径拖慢十几秒。

本文转载于:https://www.php.cn/faq/3025104.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。