boot:speed_up_boot
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
boot:speed_up_boot [2019/11/25 21:04] – peter | boot:speed_up_boot [2019/11/25 22:48] (current) – removed peter | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Boot - Speed up boot ====== | ||
- | |||
- | ===== Check startup time ===== | ||
- | |||
- | Check how long it takes to boot: | ||
- | |||
- | <code bash> | ||
- | systemd-analyze time | ||
- | </ | ||
- | |||
- | returns | ||
- | |||
- | <code bash> | ||
- | 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 | ||
- | |||
- | <code bash> | ||
- | systemd-analyze blame | ||
- | </ | ||
- | |||
- | returns | ||
- | |||
- | <code bash> | ||
- | | ||
- | | ||
- | | ||
- | 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 | ||
- | |||
- | <code bash> | ||
- | systemd-analyze critical-chain | ||
- | </ | ||
- | |||
- | returns | ||
- | |||
- | <code bash> | ||
- | The time after the unit is active or started is printed after the " | ||
- | The time the unit takes to start is printed after the " | ||
- | |||
- | 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: | ||
- | |||
- | <code bash> | ||
- | 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 | ||
- | |||
- | <code bash> | ||
- | 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' | ||
- | |||
- | ---- | ||
- | |||
- | ===== 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 | ||
- | |||
- | <code bash> | ||
- | sudo systemctl mask < | ||
- | </ | ||
- | |||
- | Replace the < | ||
- | |||
- | 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: | ||
- | |||
- | |||
boot/speed_up_boot.1574715884.txt.gz · Last modified: 2020/07/15 09:30 (external edit)