Go Go GOPreload

Rédigé par antistress le 15 octobre 2016 -

Goldorak cornofulgure
(crédit photo : Toei Animation)

GOPreload (à ne pas confondre avec Preload) est un programme que j'ai découvert sur le toujours excellent wiki de Archlinux, dont le code est hebergé sur GitHub.

Il a pour objet d'accélérer le lancement d'un logiciel donné (spécialement son lancement à froid, c'est-à-dire le premier lancement du logiciel après le démarrage du système). Pour arriver à ce résultat, il va analyser le processus de chargement du logiciel puis programmer à chaque démarrage du système le préchargement de ses différents composants. Ainsi, au lancement de l'application par l'utilisateur, celle-ci sera en fait déjà en grande partie chargée.

Il est développé sous GNU GPL v2 par Antonio Orefice, alias kokoko3k.

Avant d'aller plus loin, sachez que j'ai commencé à préparer ce billet il y a presqu'un an, le 16 novembre 2015. Je cherchais alors à accélérer le lancement de Firefox sur le système de mon père (une Debian stable) puisque la navigation web est, de loin, son principal usage au démarrage du PC. Depuis, j'ai régulièrement tenté de faire fonctionner GOPreload sur son PC mais je n'ai jamais réussi à obtenir une accélération du démarrage de Firefox, malgré la disponibilité de l'auteur (qui hélàs, n'utilise, pas Debian). Aujourd'hui je suis dans un cul-de-sac, mais je présente quand même ici le logiciel et son mode de fonctionnement puisque celui-ci semble marcher pour d'autres utilisateurs.

Je donne ici l'exemple d'installation et d'utilisation de GOPreload pour accélérer Firefox : libre à vous d'adapter le tutoriel pour d'autres applications. Tout se passe en ligne de commande.

Première étape : installer GOPreload et le configurer pour Firefox

Vérifiez d'abord que les logiciels strace et coreutils sont bien installés sur votre système.

Téléchargez le code source de GOPreload :
$ cd /tmp && git clone https://github.com/kokoko3k/gopreload.git

Compilez fmlock (inclus) et installez GOPreload :
$ cd gopreload/usr/share/gopreload/fmlock.source/ && ./compile.sh
# mkdir -p /usr/share/gopreload/bin/
# cp /tmp/gopreload/usr/share/gopreload/fmlock.source/fmlock.gopreload /usr/share/gopreload/bin/
# cp /tmp/gopreload/* / -av
# rm -R /usr/share/gopreload/fmlock.source/

Autorisez un non-administrateur du système à exécuter le démon GOPreload (remplacez ci-après « my_username » par votre nom d'utilisateur sur le système) :
# chown my_username /usr/share/gopreload/enabled /usr/share/gopreload/disabled

Demandez à GOPreload de préparer le préchargement de Firefox :
Redémarrer le système, puis entrez la commande suivante :
$ /usr/share/gopreload/bin/Prepare.sh firefox
Pressez la touche « Entrée » une fois que Firefox est pleinement chargé (vérifiez le témoin d'activité du disque dur) : vous obtenez un message du type : result on Firefox 46.0.1 : "1264 on 1264 done, will use 135MB to preload them".

Cette étape sera à effectuer de nouveau lors de mises à jour importantes du logiciel, afin de prendre en compte ses modifications structurelles.

Activez GOPreload :
# systemctl enable gopreload

Deuxième étape : vérifiez que GOPreload est bien actif

Quelques commandes devraient vous le confirmer :
$ systemctl status gopreload
ou encore :
$ ps -ef|grep preload

Troisième étape : comparez les temps de démarrage de Firefox avec et sans GOPreload

Entrez la commande $ time firefox puis fermez Firefox une fois qu'il semble complètement chargé. Comparez les résultats avec et sans le démon GOPreload actif.

Voilà, n'hésitez pas à me faire savoir si cela marche pour vous !

Les commentaires sont fermés.