Ubuntu - SystemD - Analysing performance problems with systemd
Systemd is the default init-system in fresh installations of Debian GNU/Linux.
One thing that Systemd is designed to do is speed up the booting of systems. True most installations are “servers” and as-such they're rarely rebooted, but I've been living with and working with a Debian laptop and Debian desktop for the past few years - and the laptop gets shutdown every day, and for that reason it is interesting to see how long a boot takes, and where that time is taken.
Three interesting commands to look at the boot-speed of a system are:
- systemd-analyze
- systemd-analyze critical-chain
- systemd-analyze blame
This allow you to see the times that are taken to start various things. For example the second command on this laptop shows me:
The time after the unit is active or started is printed after the "@" character. The time the unit takes to start is printed after the "+" character. graphical.target @5.384s └─multi-user.target @5.384s └─NetworkManager.service @5.105s +278ms └─basic.target @5.103s └─paths.target @5.103s └─acpid.path @5.103s └─sysinit.target @5.102s └─console-setup.service @5.047s +54ms └─kbd.service @5.024s +23ms └─remote-fs.target @5.023s └─local-fs.target @5.022s └─lvm2-monitor.service @4.995s +24ms └─system.slice @70ms └─-.slice @68ms
Similarly if I run the “systemd-analyze blame” command I can see that the longest stall is waiting for:
4.548s systemd-cryptsetup@home.service
Most of this stall is waiting for me to enter the passphrase for my encrypted /home directory!