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.