Compilation Distribuée

De Lea Linux
Révision datée du 16 février 2006 à 19:46 par Linux.tar.gz (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Compilation Distribuée

Modèle:En travaux

Avant-propos

Coucou!
Distcc répartit la compilation à travers un réseau de machines qui hébergent un serveur distccd.
Comme distcc est inclu dans presque toutes les distributions, son installation ne sera pas traitée ici. Toutefois vous pourrez trouver ce complément ici: http://distcc.samba.org/
Cette procédure a été menée à bien sur des Slackware 10.1 et 10.2 fraîchement installées.

Pré-requis

Deux machines (ou plus) en réseau.

1-Préparation des serveurs

On s'assure que port 3632 est ouvert sur les serveurs.

Sur chacune des machines, on lance:

distccd --daemon

On peut également restreindre l'accès avec cette variante:

distccd --daemon --allow 192.168.1.3 --allow 192.168.1.4 --allow 192.168.1.32

Cela signifie que 192.168.1.3, 192.168.1.4 et 192.168.1.32 pourront utiliser les ressources de ce système.

Mieux encore, distccd peut être lancé par inetd ou xinetd.

2-Compilation distribuée

Avant de lancer votre ./configure préféré, tapez:

export DISTCC_HOSTS="localhost  pc1 pc2 pc3"

ou pc1 , pc2 et pc3 sont les adresses ip des serveurs classés par puissance de calcul décroissante. Localhost doit toujours être en tête de liste car c'est lui le pivot de la compilation.

Et enfin la compilation à propremement parler:

make -j8 CC=distcc

ce qui donne pour une compilation de noyau:

make -j8 CC=distcc bzImage, suivi de make -j8 CC=distcc modules

Le switch -j8 signifie que quatre processeurs seront mis à contribution. Si vous compilez sur 10 machines mono-processeur, il faudra taper -j20. L'indice est le nombre de CPU x 2.

La commande distccmon-gnome (utilisable sans gnome) permet de suivre le labeur de vos machines en temps réel.

Conclusion

La compilation distribuée, c'est bon, mangez-en.
Ressortir un pentium 1 n'est franchement pas très utile, par contre ajouter des machines i686, même en dessous du GHz peut vous faire gagner pas mal de temps.

Tous les programmes ne compilent pas avec succès, donc ne soyez pas surpris de voir des compilations échouer.
A ce propos je n'ai pas réussi l'intégration de machines 64bits sous OS 64bits dans un réseau distcc 32 bits. J'apprécierai quelques commentaires à ce propos.