Présentation
Si le démarrage de votre serveur ou PC Linux prend plus de temps que d’habitude, il est essentiel d’en identifier la cause afin de réduire les ralentissements inutiles. Grâce à la commande systemd-analyze, vous pouvez facilement mesurer la durée totale de démarrage, pister les services système causant des goulots d’étranglement et valider vos fichiers d’unités. Cet article aborde les commandes d’analyse clés et les techniques d’optimisation des performances directement applicables en pratique.
1. Vérification du temps de démarrage et mesure des délais par étape (time & blame)
La commande systemd-analyze mesure et affiche le temps total requis lors du processus de démarrage, ainsi que les temps d’initialisation du noyau (kernel) et de l’espace utilisateur (userspace).
Le résultat d’exécution montre qu’il a fallu au total 315 ms pour que le système démarre et atteigne l’environnement graphique graphical.target.
⚙️ [Options principales]
time : Affiche le temps total passé dans le noyau et l’espace utilisateur lors du démarrage (comportement par défaut).blame : Affiche la liste des services ayant causé des lenteurs lors de l’initialisation, par ordre décroissant de durée.critical-chain : Affiche l’arbre des dépendances des services sur le chemin critique (chaîne de temps critique) entraînant des retards de démarrage.plot : Génère la chronologie complète d’exécution de chaque service pendant le démarrage sous la forme d’un fichier graphique SVG.dot : Génère les relations de dépendance entre les services au format Graphviz dot.

La commande systemd-analyze blame | head -n 10 permet de trier et de visualiser par ordre décroissant les 10 services ayant mis le plus de temps à s’initialiser parmi ceux exécutés au démarrage.
Dans le résultat affiché, on constate que systemd-resolved.service (68 ms) et ldconfig.service (67 ms) ont consommé le plus de temps lors de l’initialisation du démarrage.

2. Pister le chemin critique des lenteurs de démarrage (critical-chain)
La commande systemd-analyze critical-chain affiche l’arbre de dépendances (chemin critique) des services ayant directement impacté la finalisation du démarrage du système.
Dans la sortie, le symbole @ indique l’heure à laquelle l’unité a été activée ou lancée, et le symbole + indique le temps pris par l’exécution de l’unité elle-même.
En observant l’arborescence, on peut constater que pour atteindre graphical.target (315 ms), des services tels que systemd-resolved.service (68 ms) et systemd-journald.service (39 ms) sont chaînés en série, constituant le goulot d’étranglement majeur qui ralentit l’ensemble du démarrage.

La commande systemd-analyze critical-chain networking.service spécifie un service particulier (ici networking.service) pour suivre de manière ciblée la chaîne critique jusqu’au lancement de ce service.
Elle s’avère très utile lorsque vous souhaitez isoler et analyser les dépendances bloquantes d’un service réseau ou backend spécifique plutôt que l’ensemble du système.

3. Génération d’un rapport SVG visualisant la chronologie de démarrage (plot)
Pour stocker et gérer méthodiquement les fichiers de rapport d’analyse de démarrage, créez un répertoire dédié à l’aide de la commande mkdir -p ~/systemd-reports.

La commande systemd-analyze plot > ~/systemd-reports/boot-analysis.svg génère et enregistre un graphique vectoriel SVG représentant la chronologie visuelle du moment de lancement et de la durée d’exécution de chaque service durant le processus de démarrage complet.
Un tel diagramme permet de repérer intuitivement les flux d’exécution parallèle et les zones de latence entre les services, ce qui est souvent difficile à percevoir via de simples logs texte.

La commande ls -lh ~/systemd-reports/boot-analysis.svg permet de vérifier la présence du rapport SVG généré ainsi que des détails tels que sa taille (59 Ko).
Le fichier SVG obtenu peut être ouvert dans un navigateur web ou une visionneuse d’images afin d’analyser visuellement le diagramme chronologique détaillé du démarrage.

4. Vérification des erreurs de configuration d’unité et de la sécurité (verify & security)
La commande sudo systemd-analyze verify /lib/systemd/system/ssh.service permet de vérifier au préalable les éventuelles erreurs de syntaxe ou omissions de configuration dans le fichier d’unité spécifié.
Si aucun message n’apparaît en sortie, cela signifie que le fichier d’unité du service ne comporte aucun défaut de syntaxe ni erreur de configuration.

La commande systemd-analyze security ssh.service évalue les paramètres d’isolation sécurisée et le niveau d’exposition du système (Security Exposure) pour l’unité de service indiquée.
Les résultats permettent d’examiner en détail le statut d’application des critères de sécurité majeurs — tels que l’exécution avec les privilèges root (User=), le contrôle d’accès aux périphériques (PrivateDevices=) ou la prévention de l’élévation de privilèges (NoNewPrivileges=) — ainsi que le score global d’exposition aux risques.

Nous avons passé en revue la manière d’identifier et d’optimiser les services goulots d’étranglement ralentissant le démarrage grâce à la commande systemd-analyze.
Nettoyez les services superflus pour profiter d’un environnement de démarrage Linux nettement plus rapide et fluide.