我用它meta-raspberrypi
来塑造我的raspberrypi
形象
systemd
与 SysV 相比,我发现启动时间增加了约 2 秒。
我没有从内核日志中获取太多信息。
系统
[ 4.452082] gpiomem-bcm2835 20200000.gpiomem: Initialised: Registers at 0x20200000
[ 8.111375] i2c /dev entries driver
[ 8.284057] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered
系统V
[ 3.839449] gpiomem-bcm2835 20200000.gpiomem: Initialised: Registers at 0x20200000
[ 5.990874] i2c /dev entries driver
[ 6.136112] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered
从上面可以看出,systemd 在基本内核启动之后和加载 i2c 内核模块之前花费了一些额外的时间。
我假设这时间花在启动 systemd 服务上。
如果是,我如何检查哪些服务已启动以及每个服务花费了多少时间?
答案1
首先,我观察到您问题中的两个输出均来自 SysV init ( INIT: version 2.88
),因此在某些时候您会感到困惑。
不管怎样,WRT各种服务的时间,你可以得到一个非常时髦的SVG systemd-analyze plot > sysd.svg
(这里的重定向是必要的,否则它会将SVG数据打印到标准输出,这不是很有用):
无法选择输出格式,但是这个(来自运行 Raspbian 8 的 B+)被转换为 JPEG convert sysd.svg sysd.jpg
(convert
是 ImageMagick 的一部分,可在任何 Linux 发行版上使用)。
可以使用 提供更简单的文本列表systemd-analyze blame
。
systemd 正在启动,所以我不需要任何服务
可能吧,但一般来说这些不会花费任何时间。例如,如果某个服务负责设置 NFS,但您尚未配置任何此类文件系统,则它不会占用任何时间或资源。
当然,为了保持整洁,您可能无论如何都想摆脱它们。首先确保您确定某物的用途。 systemctl list-units
在这里很有用,因为默认情况下它提供了加载服务的简单列表。 Systemd 有很多手册页;你可以找到它们apropos systemd
(如果你没有得到任何输出,请先尝试sudo mandb
,无论出于何种原因,有时这在某些发行版上没有保持)。其中许多是编写服务文件的指南;将其严格限制为命令使用apropos -s 1 systemd
。