Introduction
Devant compiler plusieurs fois des noyaux, modules et autres afin de gagner un peu de temps en perdant un peu de % cpu sur une machine… J’ai mis en place ICECC
- Machine 1 : Nom Debian : 1 CPU AMD Sempron(tm) Processor 2600+ 1.60GHz
- Machine 2 : Nom Helios : 1 CPU double coeur Intel(R) Pentium(R) 4 CPU 3.20GHz
Installation
apt-get install iceccConfiguration
On doit éditer deux fichiers /etc/default/icecc et /etc/icecc/icecc.conf
Le premier indique si le service iceccd doit ou non démarrer et si le noeud doit distribuer des taches de compilation. Comme aucune des deux machines n’est plus que l’autre destinée à la compilation, j’ai choisit de mettre les deux en »scheduler ». Par ailleurs comme ces deux machines n’ont aucune limitation dans le réseau privé d’activée, celles-ci communiquent sans restriction. J’ai mis donc en place les mêmes fichiers sur l’une et l’autre.
nano /etc/default/icecc
START_ICECC="true" START_ICECC_SCHEDULER="true"
nano /etc/icecc/icecc.conf
ICECC_NICE_LEVEL="5" ICECC_LOG_FILE="/var/log/iceccd.log" ICECC_NETNAME="" ICECC_MAX_JOBS="" ICECC_BASEDIR="/var/cache/icecc" ICECC_SCHEDULER_LOG_FILE="/var/log/icecc_scheduler.log" ICECC_SCHEDULER_HOST=""
Mais cela ne fonctionne pas car, la variable d’environement :
PATH="/usr/lib/icecc/bin:${PATH}"
n’est pas définie….
J’ai donc édité sur les deux machines et ajouté en fin de fichier /etc/bash.bashrc
# make : ayant sur debian 1 cpu et sur helios 2 cpu, et ayant mis en place icecc alias make='make -j3' export PATH="/usr/lib/icecc/bin:${PATH}"
Vous aurez remarqué que j’ai fait un alias de make lui indiquant qu’il doit être exécuté avec trois fils (thread)… Ce n’est pas obligatoire si vous désirez avoir autant de fils que possible. En effet make utilise tous les fils possibles.
En faisant ainsi sur la machine appelée Debian, j’ai pu compilé en 1.5, 2 ou 3 fois moins de temps… En utilisant quelques % de CPU à Helios.
Utilitaires
Installez (apt-get install icemon) icemon sur une des machines afin de voir les compilations lancées sur vos machines.
Par exemple :
Sur ma Debian avec les sources du noyau 2.6.34.7 :
Avec une compilation normale :
time (make && make bzImage && make modules && make modules_install && make install)
CHK include/linux/version.h
CHK include/generated/utsrelease.h
CALL scripts/checksyscalls.sh
CHK include/generated/compile.h
[...]
real 185m17.643s
Avec une compilation parallèle :
time (make && make bzImage && make modules && make modules_install && make install)
CHK include/linux/version.h
CHK include/generated/utsrelease.h
CALL scripts/checksyscalls.sh
CHK include/generated/compile.h
[...]
real 77m5.191s
Nous remarquons que la compilation à été plus de deux fois plus rapide !
- Fin -
Share on Facebook


Commentaires récents