User Tools

Site Tools


boot:speed_up_boot

This is an old revision of the document!


Boot - Speed up boot

Check startup time

Check how long it takes to boot:

systemd-analyze time

returns

Startup finished in 16.619s (firmware) + 10.201s (loader) + 36.729s (kernel) + 41.034s (userspace) = 1min 44.586s
graphical.target reached after 23.396s in userspace

Check which services takes most time

Use the following command to check which service takes most of time

systemd-analyze blame

returns

         30.898s apt-daily.service
         20.417s rsyslog.service
         20.187s libvirtd.service
          5.774s systemd-networkd-wait-online.service
          3.654s docker.service
          1.841s apt-daily-upgrade.service
          1.820s snapd.service
          1.487s plymouth-quit-wait.service
           993ms dev-mapper-ubuntu\x2d\x2dvg\x2droot.device
           855ms NetworkManager.service
           768ms fwupd.service
           752ms udisks2.service
           745ms apparmor.service
           736ms networkd-dispatcher.service
           725ms snap-gnome\x2dcalculator-544.mount
           710ms networking.service
           697ms thermald.service
           680ms snap-netbeans-10.mount
           674ms snap-gnome\x2dlogs-81.mount
           661ms systemd-resolved.service
           643ms systemd-timesyncd.service
           642ms systemd-logind.service
           558ms ModemManager.service
           550ms apport.service
           544ms gpu-manager.service
           528ms motd-news.service
           502ms grub-common.service
...

Check the critical chain

Use the following command to check which service takes most of time

systemd-analyze critical-chain

returns

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 @23.396s
└─multi-user.target @23.396s
  └─libvirt-guests.service @23.378s +18ms
    └─libvirtd.service @3.189s +20.187s
      └─network.target @3.189s
        └─NetworkManager.service @2.333s +855ms
          └─dbus.service @2.223s
            └─basic.target @2.207s
              └─sockets.target @2.207s
                └─docker.socket @2.206s +965us
                  └─sysinit.target @2.203s
                    └─apparmor.service @1.458s +745ms
                      └─local-fs.target @1.457s
                        └─run-user-1000-gvfs.mount @15.641s
                          └─run-user-1000.mount @14.700s
                            └─swap.target @1.607s
                              └─dev-mapper-ubuntu\x2d\x2dvg\x2dswap_1.swap @1.565s +36ms
                                └─dev-mapper-ubuntu\x2d\x2dvg\x2dswap_1.device @1.565s

Disabling auto-start of services during boot

If you want to disable auto-starting of services during boot you can use the following command:

sudo systemctl disable some-time-eater-service.service --now

However, you might want to see which other services needs the service in question. To check use the following command

systemctl list-dependencies some-time-eater-service.service --reverse

Note: Replace some-time-eater-service.service with actual service name like postgresql@9.5-main.service.

Note that, disabling auto-start doesn't make a service non-startable. The service can be started after boot when requirement arises. If you want to completely disable it, read the next section


Disabling services completely.

If you want to completely disable a service so that it can't be started, you should use mask instead of disable. Like this

sudo systemctl mask <SERVICE-NAME>

Replace the <SERVICE-NAME> with actual name of a service

The difference between mask and disable is mask make a service completely disable, you can't start it. You must unmask to start it with systemd (you can still start with service). But disable simply disable auto-start of a service, you can start it later.

For example, After masking my postgresql@9.5-main.service service, when I wanted to start it with systemctl the following message is shown

Failed to start postgresql@9.5-main.service: Unit postgresql@9.5-main.service is masked.

boot/speed_up_boot.1574715855.txt.gz · Last modified: 2020/07/15 09:30 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki