Чтобы получить обзор времени загрузки системы, мы можем запустить команду systemd-analysis без каких-либо аргументов. Она выведет информацию о том, сколько времени занимает запуск каждой служба при запуске системы, включая время, затраченное ядром, initrd и userpace во время загрузки.
# systemd-analyze
Startup finished in 1min 1.117s (kernel) + 41.426s (userspace) = 1min 42.543s
graphical.target reached after 41.278s in userspace
Если вы хотите просмотреть список всех запущенных блоков, отсортированных по времени, затраченному на инициализацию (максимальное время сверху), для этой цели используется подпрограмма blame.
# systemd-analyze blame
18.765s nmbd.service
9.167s man-db.service
6.951s dev-sdb1.device
6.433s systemd-journal-flush.service
5.966s smbd.service
4.023s systemd-journald.service
3.878s keyboard-setup.service
3.275s apt-daily.service
3.274s apt-daily-upgrade.service
3.196s systemd-udev-trigger.service
2.583s e2scrub_reap.service
1.989s loadcpufreq.service
1.819s run-rpc_pipefs.mount
1.351s modprobe@drm.service
1.205s ssh.service
1.135s apparmor.service
1.118s networking.service
1.034s systemd-logind.service
1.012s user@0.service
1.004s logrotate.service
935ms user@1001.service
746ms dev-hugepages.mount
732ms dev-mqueue.mount
685ms sys-kernel-debug.mount
677ms systemd-backlight@backlight:acpi_video0.service
662ms kmod-static-nodes.service
659ms sys-kernel-tracing.mount
630ms modprobe@configfs.service
597ms systemd-remount-fs.service
574ms systemd-udevd.service
570ms rpcbind.service
567ms modprobe@fuse.service
544ms systemd-modules-load.service
510ms systemd-sysusers.service
472ms systemd-timesyncd.service
441ms systemd-sysctl.service
431ms systemd-random-seed.service
402ms systemd-tmpfiles-setup.service
376ms systemd-update-utmp.service
323ms systemd-tmpfiles-setup-dev.service
300ms cpufrequtils.service
277ms sys-fs-fuse-connections.mount
178ms mnt-ssd.mount
168ms systemd-user-sessions.service
165ms sys-kernel-config.mount
141ms ifupdown-pre.service
114ms console-setup.service
112ms rc-local.service
104ms nfs-config.service
101ms systemd-update-utmp-runlevel.service
98ms systemd-tmpfiles-clean.service
94ms user-runtime-dir@1001.service
82ms user-runtime-dir@0.service
Как видно из приведённого выше вывода, каждый блок сортируется в зависимости от времени, которое позволяет узнать, какая утилита занимает наибольшее количество времени при загрузке системы.
Затем мы также можем просмотреть дерево time-critical цепи для конкретной утилиты или вывести список указанных утилит с подкомандой critical-chain:
# systemd-analyze critical-chain
graphical.target @41.278s
└─multi-user.target @41.277s
└─smbd.service @35.300s +5.966s
└─nmbd.service @16.506s +18.765s
└─network-online.target @16.496s
└─network.target @16.493s
└─networking.service @15.356s +1.118s
└─apparmor.service @14.177s +1.135s
└─local-fs.target @14.169s
└─mnt-ssd.mount @13.989s +178ms
Наконец, давайте рассмотрим еще одну важную подкоманду, которая позволяет создавать графически (svg-формат) детализированные системные службы, которые были запущены.
Убедитесь, что графический режим отображения или x-windowsвключены для просмотра графика.
# systemd-analyze plot > boot_analysis.svg
# xviewer boot_analysis.svg
Все вышеприведённые команды будут выводить статистику загрузки для локальной машины. Чтобы просмотреть информацию с удалённого хоста по ssh, используйте флаг -Hи укажите директиву username@host, как показано ниже:
# systemd-analyze time -H tecmint@192.168.56.5
# systemd-analyze blame -H tecmint@192.168.56.5
# systemd-analyze critical-chain -H tecmint@192.168.56.5
systemd-analyze также может использоваться для поиска другой информации о состоянии и трассировке системы. Для получения дополнительной информации загляните на страницу man:
# man systemd-analyze