May 2024
M T W T F S S
 12345
6789101112
13141516171819
20212223242526
2728293031  

Categories

May 2024
M T W T F S S
 12345
6789101112
13141516171819
20212223242526
2728293031  

CentOS / RHEL 7 : systemd-analyze command to find booting time delays

Question : My system is taking a lot of time to boot. How can I find out which services are taking long time to start?

Answer :

systemd-analyze command can be utilized to find out information about how much each service took to start. systemd-analyze time can provide overall information about how long it took system to start. Here is a command out which clearly shows the time taken by kernel, initrd and userspace while booting.

# systemd-analyze time
Startup finished in 1.267s (kernel) + 6.798s (initrd) + 1min 2.139s (userspace) = 1min 10.205s
To find out, how much time each unit took to start, run systemd-analyze blame.

# systemd-analyze blame
24.728s dev-mapper-centos\x2droot.device
15.135s kdump.service
14.670s plymouth-quit-wait.service
14.210s firewalld.service
9.835s accounts-daemon.service
7.383s ModemManager.service
7.259s libvirtd.service
7.257s systemd-logind.service
7.177s ksm.service
7.081s gssproxy.service
7.067s avahi-daemon.service
7.062s rsyslog.service
7.039s abrt-ccpp.service
As you see the output is sorted according to the time taken by each unit, you can easily find out which service is taking more time during booting and can dig down deeper to analyze the issue.

At certain steps, the boot cannot proceed until all dependencies for unit are satisfied. To see units at these critical points run systemd-analyze critical-chain.

# systemd-analyze critical-chain
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 @1min 2.102s
??multi-user.target @1min 2.102s
??abrt-vmcore.service @1min 1.228s +872ms
??kdump.service @46.090s +15.135s
??remote-fs.target @46.086s
??remote-fs-pre.target @46.083s
??iscsi-shutdown.service @45.951s +99ms
??network.target @45.944s
??network.service @44.959s +975ms
??NetworkManager.service @38.653s +689ms
??firewalld.service @24.439s +14.210s
??basic.target @23.850s
??sockets.target @23.849s
??cups.socket @23.847s
??sysinit.target @23.618s
??systemd-update-utmp.service @23.603s +13ms
??auditd.service @22.959s +643ms
??systemd-tmpfiles-setup.service @22.726s +230ms
??rhel-import-state.service @22.431s +294ms
??local-fs.target @22.428s
??boot.mount @19.675s +2.126s
??dev-disk-by\x2duuid-7de2053c\x2d44d7\x2d4f33\x2db522\x2d81dee2f6b69b.device @19.652s
SVG graphic image can be plot which contains detailing about system services start time, highlighting the time they spent on initialization. Make sure you have enabled graphical display mode or have x-windows enabled in order to see the plot.

# systemd-analyze plot > plot.svg
# eog plot.svg
Here is a snip from sample plot on my CentOS 7 machine. Zoom in to check the waterfall clearly.

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>