Startup Scenes

Charly's Column – systemd-analyze

Article from Issue 212/2018
Author(s):

In sys admin columnist Charly's case, no fumbled system startup goes undetected. This was already the case with SysVinit and has not changed with systemd. In terms of the his analysis tools, no stopwatch goes unturned.

If a distribution shows its splash screen on startup – and almost all of them do – then I turn it off as of the second boot. I want to see the kernel messages rushing by when booting. Because more often than you might think, there's a problem with booting. When I see something questionable scurry by, I search with a tool like Bootchart [1] to find and fix a hanging process or similar issues quickly.

On systems with systemd, this is also possible in principle, but the tool is different: systemd-analyze. When called without parameters, systemd-analyze calculates the elapsed time until system startup is completed, broken down into kernel and userspace processes:

Startup finished in 3.507s (kernel) + 16.334s (userspace) = 19.842s

Of course, I want to know more about those processes now. The command systemd-analyze blame gives me a list of all processes started at boot time. They are sorted by the elapsed time before the process has fully launched. I usually only see the 10 biggest time hogs, as shown in Listing 1.

Listing 1

systemd-analyze blame | head

1min 3.753s apt-daily.service
    40.702s apt-daily-upgrade.service
     8.649s fail2ban.service
     4.246s networking.service
     3.327s smokeping.service
     2.622s apache2.service
     2.303s mysql.service
     2.206s postfix.service
     1.835s dev-sdb1.device
      993ms munin-node.service

In this particular case, I can ignore the candidates in lines 1 and 2 – they appear if the system performs unattended updates or upgrades on startup. Fortunately, they do not block any other processes and simply wriggle around a bit in the background. systemd-analyze does not calculate them for this reason, as can already be seen from the sums.

Serial Plot

With the plot parameter, I can create a kind of timeline in SVG format, which shows the boot process in a very clear graphical way. For this to work, the graphwiz package must be installed. The command is then:

systemd-analyze plot > systemd-boot.svg

Figure 1 shows a small section of the results. The start time of the individual processes is symbolized here by a red bar. Not only the start order and times, but all the dependencies between the services, can be summarized by the tool in the form of an SVG graphic:

systemd-analyze dot | dot -Tsvg > dependencies.svg
Figure 1: An SVG format timeline showing each service's system start times.

Caution: The result is really huge and probably only makes life easier for owners of A1-sized plotters.

Infos

  1. Bootchart: http://www.bootchart.org

The Author

Charly Kühnast manages Unix systems in the data center in the Lower Rhine region of Germany. His responsibilities include ensuring the security and availability of firewalls and the DMZ.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Systemd Timers

    Systemd can start timers that automatically perform tasks at specified times. The configuration files are known as timer units.

  • systemd Tips

    Sure, you've heard about systemd, which is rapidly replacing the old System V init system as the go-to service management daemon for the Linux world. But what can you do with systemd really? We'll show you some tricks for improving security, managing processes, and analyzing boot times with systemd.

  • Command Line: Systemd

    Wondering what all the fuss is about systemd? We explain the basic concepts and capabilities of the new system management suite – coming soon to a distro near you.

  • Systemd Units

    Systemd units use files to control resources that Systemd manages.

  • systemd-networkd

    The new networkd component of the systemd project supports basic network configuration. Despite its early stage of development, one thing is clear: This is a daemon with brains.

comments powered by Disqus

Direct Download

Read full article as PDF:

Price $2.95

News