Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
LINUX-SYSTEMD-ANALYZE-GUIDE Linux / DevOps

Гайд: Анализ времени загрузки операционной системы с помощью systemd-analyze (blame, critical-chain)

Обновлено: 21.08.2026  ·  Официальная база знаний

Архитектура профилирования загрузки Linux (systemd Profiling)

Системный менеджер systemd производит детальный хронометраж каждого этапа инициализации операционной системы: от передачи управления загрузчиком до достижения финального таргета default.target (multi-user.target или graphical.target). Инструмент systemd-analyze позволяет разобрать процесс загрузки на миллисекунды, выявить блокирующие цепочки зависимостей, медленные сетевые сервисы и «подвисшие» инициализационные скрипты.

Бизнес-риски долгой загрузки

Медленный автоскейлинг виртуальных машин в облачных кластерах (AWS Auto Scaling / Kubernetes Worker Nodes), долгие технологические окна при обновлении критических серверов баз данных.

Фазы инициализации операционной системы в systemd-analyze

ФазаЗона ответственностиМетоды ускорения
FirmwareИнициализация аппаратной части UEFI / BIOS материнской платы.Отключение лишних контроллеров (PXE, COM-порты, Fast Boot).
LoaderВремя работы загрузчика GRUB2 до старта ядра.Уменьшение GRUB_TIMEOUT до 1–2 секунд.
KernelРаспаковка ядра, загрузка драйверов устройств и initramfs.Удаление неиспользуемых модулей из initramfs.
UserspaceПараллельный запуск системных сервисов, сокетов и демонов.Оптимизация unit-файлов, отключение ненужных служб.

Регламент профилирования и оптимизации времени старта

Сценарий 1: Экспресс-оценка времени загрузки системы

# 1. Вывод суммарного времени по фазам:
systemd-analyze
# Пример вывода:
# Startup finished in 1.450s (firmware) + 2.100s (loader) + 3.210s (kernel) + 42.120s (userspace) = 48.880s
# graphical.target reached after 41.980s in userspace

Сценарий 2: Поиск самых медленных сервисов через systemd-analyze blame

Команда blame выводит список всех сервисов, отсортированный по времени их инициализации:

# Вывод топ-15 самых долгих сервисов:
systemd-analyze blame | head -n 15

# Типичные виновники долгой загрузки:
# 18.210s snapd.service
# 12.450s cloud-init.service
# 09.300s plymouth-quit-wait.service
# 07.120s NetworkManager-wait-online.service

Сценарий 3: Анализ критического пути запуска через critical-chain

Важно: Самый долгий сервис из blame не всегда замедляет загрузку, если он стартует параллельно! Реальное замедление показывает ТОЛЬКО критическая последовательная цепочка:

# Построение дерева критической цепочки зависимостей:
systemd-analyze critical-chain

# Сервисы, выделенные красным (с символом @), непосредственно сдвинули финальное время старта системы.

Сценарий 4: Экспорт визуальной векторной диаграммы загрузки (Boot Plot SVG)

# Построение подробного водопадного графика всех процессов загрузки:
systemd-analyze plot > /tmp/boot_analysis.svg

# Файл можно открыть в любом браузере для детального визуального аудита.

Сценарий 5: Практическая оптимизация типичных проблемных юнитов

# 1. Отключение ожидания полной инициализации сети (если сервисам не нужен статический онлайн при старте):
sudo systemctl disable NetworkManager-wait-online.service
sudo systemctl mask systemd-networkd-wait-online.service

# 2. Отключение ненужных cloud-скриптов на статических виртуальных машинах:
sudo touch /etc/cloud/cloud-init.disabled

# 3. Ускорение таймаута GRUB:
sudo sed -i 's/GRUB_TIMEOUT=5/GRUB_TIMEOUT=1/' /etc/default/grub
sudo update-grub

Типовые ошибки администраторов

  • Слепое отключение всех сервисов из топа blame: Отключение таких служб, как systemd-udev-settle.service или lvm2-monitor.service на серверах с аппаратными RAID или LVM может привести к невозможности обнаружения дисков при старте.
  • Игнорирование Network-Wait сервисов: Ожидание поднятия DHCP на неподключенном интерфейсе может в одиночку добавлять ровно 120 секунд задержки по стандартному таймауту.
Виртуальные машины в облаке стартуют слишком долго при масштабировании?
Инженеры ITSTM соберут кастомные минималистичные образы initramfs/Cloud-Init и оптимизируют граф запуска сервисов systemd под мгновенный старт.
Практический опыт инженера: Для сокращения фазы Kernel до минимума в production-образах исключайте автогенерацию универсальных initramfs со всеми модулями мира. Включайте директиву MODULES=dep в /etc/initramfs-tools/initramfs.conf, чтобы запаковывать только драйверы, реально необходимые текущему серверу.

Частые вопросы (FAQ)

Почему NetworkManager-wait-online.service так долго грузится?

Сервис ожидает подтверждения того, что сеть получила IP-адрес и DNS на всех настроенных интерфейсах. Если один из интерфейсов не подключен к кабелю, сервис ждет до истечения жесткого таймаута (обычно 30–90 секунд).

Как узнать время загрузки предыдущих ребутов системы?

Используйте флаг указания номера загрузки: systemd-analyze --boot=-1 (для предыдущей загрузки) или systemd-analyze --boot=-2.

Что такое systemd-udev-settle.service и можно ли его отключить?

Он ожидает завершения обработки всех событий udev для оборудования. В современных системах он устарел и может быть безопасно отключен, если не используется устаревший софт управления накопителями.

Как проверить синтаксис unit-файлов на ошибки?

Выполните команду: systemd-analyze verify /etc/systemd/system/*.service.