Recherche de site Web

systemd-analyze - Rechercher des statistiques de performances de démarrage du système sous Linux


Utilisez-vous le système systemd et le gestionnaire de services, et votre système Linux prend plus de temps à démarrer ou souhaitez-vous simplement afficher les rapports sur les performances de démarrage de votre système ? Si oui, vous êtes au bon endroit.

Dans cet article, nous allons vous montrer comment analyser les statistiques de performances de démarrage d'un système Linux à l'aide de systemd-analyze, l'un des nombreux utilitaires de systemd pour la gestion du système.

Lire aussi : Comment contrôler les services Systemd sur un serveur Linux distant

Pour avoir un aperçu du temps de démarrage du système, nous pouvons exécuter la commande systemd-analyze sans aucun argument comme suit. Il répertoriera les informations sur le temps nécessaire au démarrage de chaque service, qui inclut le temps nécessaire au noyau, à l'initrd et à l'espace utilisateur lors du démarrage.

systemd-analyze

Startup finished in 884ms (kernel) + 3.861s (initrd) + 48.356s (userspace) = 53.102s

Si vous souhaitez afficher une liste de toutes les unités en cours d'exécution, triées par temps d'initialisation (temps le plus élevé en haut), la sous-commande blâme est utilisée à cet effet. Après avoir exécuté la commande qui suit, utilisez [Enter] pour afficher plus de services dans la liste et q pour quitter.

systemd-analyze blame 
         16.159s mariadb.service
         12.178s libvirtd.service
         10.298s tuned.service
          9.836s postfix.service
          8.704s lsws.service
          7.352s lscpd.service
          4.988s [email 
          4.779s NetworkManager-wait-online.service
          4.577s lvm2-monitor.service
          4.439s ModemManager.service
          4.413s polkit.service
          4.280s dev-sda1.device
          4.225s systemd-udev-settle.service
          3.957s firewalld.service
          3.227s rhel-dmesg.service
          3.221s abrt-ccpp.service
          3.142s rsyslog.service
          3.053s avahi-daemon.service
          3.042s pure-ftpd.service
          2.249s gssproxy.service
          2.212s NetworkManager.service
          1.889s proc-fs-nfsd.mount
          1.780s systemd-tmpfiles-setup-dev.service
          1.451s sshd.service
          1.267s rhel-readonly.service
          1.035s sysstat.service
          1.001s rpc-statd-notify.service
           910ms systemd-logind.service
           739ms kdump.service
           738ms network.service
...

Comme vous pouvez le voir dans le résultat ci-dessus, chaque unité est triée en fonction du temps nécessaire, vous pouvez simplement découvrir quel service prend le plus de temps lors du démarrage et analyser le problème.

Ensuite, nous pouvons également afficher une arborescence de la chaîne temporelle critique pour la cible par défaut ou une liste d'unités spécifiées avec la sous-commande de chaîne critique comme indiqué.

systemd-analyze critical-chain  
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.

multi-user.target @48.342s
└─mariadb.service @31.560s +16.159s
  └─network.target @31.558s
    └─network.service @30.819s +738ms
      └─NetworkManager-wait-online.service @26.035s +4.779s
        └─NetworkManager.service @23.821s +2.212s
          └─network-pre.target @23.821s
            └─firewalld.service @19.863s +3.957s
              └─polkit.service @15.381s +4.413s
                └─basic.target @12.271s
                  └─sockets.target @12.271s
                    └─virtlockd.socket @12.270s
                      └─sysinit.target @12.251s
                        └─systemd-update-utmp.service @12.196s +54ms
                          └─auditd.service @11.705s +486ms
                            └─systemd-tmpfiles-setup.service @11.609s +93ms
                              └─rhel-import-state.service @11.397s +211ms
                                └─local-fs.target @11.363s
                                  └─run-user-0.mount @46.910s
                                    └─local-fs-pre.target @10.575s
                                      └─lvm2-monitor.service @5.996s +4.577s
                                        └─lvm2-lvmetad.service @7.376s
                                          └─lvm2-lvmetad.socket @5.987s
                                            └─-.slice
systemd-analyze critical-chain ntp.service networking.service

Enfin, examinons une autre sous-commande importante qui permet de produire des détails graphiques (au format SVG) des services système qui ont été démarrés et à quelle heure, en mettant en évidence leur heure d'initialisation, comme suit.

Assurez-vous que le mode d'affichage graphique ou X-windows est activé afin de visualiser le tracé.

systemd-analyze plot > boot_analysis.svg
xviewer boot_analysis.svg  

Toutes les commandes ci-dessus imprimeront les statistiques de performances de démarrage de la machine locale. Pour afficher les informations d'un hôte distant via ssh, utilisez l'indicateur -H et spécifiez la directive username@host, comme indiqué.

systemd-analyze time -H [email 
systemd-analyze blame -H [email 
systemd-analyze critical-chain -H [email 

systemd-analyze peut également être utilisé pour trouver d'autres informations d'état et de traçage à partir du système et de systemd (gestionnaire de services), et plus encore. Pour plus d’informations, consultez sa page de manuel.

man systemd-analyze 

Lire aussi : Comment modifier les niveaux d'exécution (cibles) dans SystemD

C'est tout pour le moment! Si vous avez des questions ou des idées à partager, utilisez le formulaire de commentaires ci-dessous pour nous contacter.