Améliorer le Boot sous Debian 9

Je ne sais pas trop ce qui m’a pris, je me suis mis en tête d’ optimiser la durée du boot de mon PC équipé de Debian 9.3.

J’en été resté à l’utilisation de bootchart qui était pas mal mais pas pratique du tout. Aujourd’hui, heureusement, il y a systemd.

Voici les quelques commandes qui m’ont servis à optimiser ( un tout petit peu ) mon boot

Récupérer le temps du boot

$ systemd-analyze time
Startup finished in 2.187s (kernel) + 8.919s (userspace) = 11.107s

Voir le temps de démarrage des services

$ systemd-analyze blame
8.096s NetworkManager-wait-online.service
           964ms networking.service
           264ms colord.service
           216ms dev-sda1.device
           162ms systemd-timesyncd.service
            87ms ModemManager.service
            82ms autofs.service
            79ms NetworkManager.service
            75ms keyboard-setup.service
            72ms systemd-fsck@dev-disk-by\\x2duuid-7b7fe11e\\x2dfe4f\\x2d4c8f\\x2da71f\\x2d39a6298428d5.service
            67ms accounts-daemon.service
            45ms systemd-udevd.service
            45ms bluetooth.service
            44ms systemd-modules-load.service
            42ms systemd-udev-trigger.service
            37ms geoclue.service
            37ms packagekit.service
            36ms upower.service
            36ms systemd-journald.service
[...]

Analyser le chemin critique ( c.-à-d. voir où ça coince )

$ 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.

graphical.target @8.907s
└─multi-user.target @8.907s
  └─autofs.service @8.823s +82ms
    └─network-online.target @8.821s
      └─NetworkManager-wait-online.service @724ms +8.096s
        └─NetworkManager.service @644ms +79ms
          └─dbus.service @616ms
            └─basic.target @615ms
              └─sockets.target @615ms
                └─dbus.socket @615ms
                  └─sysinit.target @612ms
                    └─systemd-backlight@backlight:acpi_video0.service @1.079s +7
                      └─system-systemd\\x2dbacklight.slice @1.079s
                        └─system.slice @125ms
                          └─-.slice @114ms

Récupérer un graphique du boot

$ systemd-analyze plot > plot.svg

Désactivation des services inutiles ( du moins au boot )

Par exemple, j’ai désactivé mongodb et virtualbox du démarrage

$ systemctl disable vboxdrv.service
$ systemctl disable vboxballoonctrl-service.service
$ systemctl disable vboxweb-service.service
$ systemctl disable mongodb.service

Analyser les logs d’un service

$ journalctl -b -u NetworkManager.service

Conclusion

Je n’ai pas encore réussi à optimiser le démarrage du network manager. ça prend quand même 8 secondes. Ce n’est pas trop la mort, mais bon en ce moment, je ne vois pas trop comment mieux. Le gros est dans la négociation DHCP et je ne souhaite pas mettre une IP fixe.

 

 

 

 

 

 

 

 

 

Vus : 1230
Publié par Littlewing : 368