Многие администраторы задаются вопросом – что задерживает загрузку их Linux системы, какие службы и как влияют на этот процесс. Желательно в цифрах и фактах.
Возможно, вы удивитесь, но все это в вашей системе уже есть, с цифрами, фактами и графиками. Достаточно воспользоваться утилитой systemd-analyze.
Если вы просто запустите ее, то получите общее время загрузки системы разделенные на этапы загрузки ядра и пользовательского окружения. Понятно, что такой информации мало, поэтому будем детализировать.
Прежде всего получим список процессов, влияющих на загрузку и отсортированных по времени запуска:
systemd-analyze blame
Также можно построить зависимостей и времени запуска критических сервисов:
systemd-analyze critical-chain
Для анализа вам может пригодиться график загрузки, для его построения используйте:
systemd-analyze plot > boot.svg
А этой командой можно построить граф зависимостей сервисов в формате DOT, но сам по себе он мало интересен, потому как полный граф системы представляет собой сильно запутанное и нечитаемое дерево, куда интереснее получить граф для отдельно взятой службы или таргета.
Для преобразования DOT-файла в график вам потребуется установить пакет
graphviz:apt install graphviz
После чего выполните команду:
systemd-analyze dot docker.service | dot -Tsvg > docker.svg
И в папке запуска скоро появится интересующий вас график, по которому можно изучить все зависимости юнита. Обратите внимание, что имя сервиса нужно писать полностью, с указанием типа юнита.

