Skip to content


Compilation parallèle avec ICECC sous Debian Squeeze

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 icecc

Configuration

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.

icemon-compilation-noyau.mpeg

 

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 -

Print Friendly, PDF & Email

Posted in Debian, Important, Linux, Mandriva, Technique, Toutes. Tagged with , , , , , .

0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

Some HTML is OK

(required)

(required, but never shared)

or, reply to this post via trackback.

Time limit is exhausted. Please reload CAPTCHA.


/* */
Creative Commons License
Cette création par Laurent Besson est mise à disposition selon les termes de la licence Creative Commons Paternité-Partage des Conditions Initiales à l'Identique 2.0 France.