« Compilation Distribuée » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
(balises code)
 
(11 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[[Catégorie:Développement]]
= Compilation Distribuée =
= Compilation Distribuée =
{{ en construction }}
 
par Linux.tar.gz
 
== Avant-propos ==
== Avant-propos ==


Distcc répartit la compilation à travers un réseau de machines qui hébergent un serveur distccd.
Distcc répartit la compilation à travers un réseau de machines qui hébergent un serveur distccd.
Ligne 9 : Ligne 12 :


Cette procédure a été menée à bien sur des Slackware 10.1 et 10.2 fraîchement installées.
Cette procédure a été menée à bien sur des Slackware 10.1 et 10.2 fraîchement installées.
Elle marchera sur n'importe quelle autre distribution.


== Pré-requis ==
== Pré-requis ==
Ligne 16 : Ligne 20 :
== 1-Préparation des serveurs ==
== 1-Préparation des serveurs ==


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


Sur chacune des machines, on lance:
Sur chacune des machines, on lançait:
<code multi>distccd --daemon</code>
<div class="code">distccd --daemon</div>


On peut également restreindre l'accès avec cette variante:
On doit désormais restreindre l'accès avec cette variante:
<code multi>distccd --daemon --allow 192.168.1.3 --allow 192.168.1.4 --allow 192.168.1.32</code>
<div class="code">distccd --daemon --allow 192.168.1.3 --allow 192.168.1.4 --allow 192.168.1.32</div>
Cela signifie que 192.168.1.3, 192.168.1.4 et 192.168.1.32 pourront utiliser les ressources de ce système.
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, <code>distccd</code> peut être lancé par <code>inetd</code> ou [[Xinetd]].
Mieux encore, <span class="code">distccd</span> peut être lancé par <span class="code">inetd</span> ou [[Xinetd]].


== 2-Compilation distribuée==
== 2-Compilation distribuée==


Avant de lancer votre ./configure préféré, tapez:
Avant de lancer votre ./configure préféré, tapez:
<code multi>export DISTCC_HOSTS="localhost  pc1 pc2 pc3"</code>
<div class="code">export DISTCC_HOSTS="localhost  pc1 pc2 pc3"</div>
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.
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:
Et enfin la compilation à propremement parler :
<code multi>make -j8 CC=distcc</code>
<div class="code">make -j8 CC=distcc</div>
ce qui donne pour une compilation de noyau:
Ce qui donne pour une compilation de noyau :
<code multi># make -j8 CC=distcc bzImage
<div class="code"># make -j8 CC=distcc bzImage
# make -j8 CC=distcc modules</code>
# make -j8 CC=distcc modules</div>
 
Le switch <span class="code">-j8</span> signifie que quatre processeurs seront mis à contribution. Si vous compilez sur 10 machines mono-processeur, il faudra taper <span class="code">-j20</span>. L'indice est le nombre de CPU multiplié par 2.


Le switch <code>-j8</code> signifie que quatre processeurs seront mis à contribution. Si vous compilez sur 10 machines mono-processeur, il faudra taper <code>-j20</code>. L'indice est le nombre de CPU multiplié par 2.
La commande <span class="code">distccmon-gnome</span> (utilisable sans gnome) permet de suivre le labeur de vos machines en temps réel.


La commande <code>distccmon-gnome</code> (utilisable sans gnome) permet de suivre le labeur de vos machines en temps réel.
Il est à noter que le serveur distcc ne doit pas nécessairement tourner sur la machine qui lance la compilation.


== Conclusion ==
== Conclusion ==
Ligne 49 : Ligne 55 :


Tous les programmes ne compilant pas avec succès, ne soyez donc pas surpris de voir des compilations échouer.<br>
Tous les programmes ne compilant pas avec succès, ne soyez donc pas surpris de voir des compilations échouer.<br>
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.
A ce propos je n'ai pas réussi l'intégration de machines 64 bits sous OS 64 bits dans un réseau distcc 32 bits. J'apprécierai quelques commentaires à ce propos.
 
Enfin, distccd, s'il est accessible depuis internet, représente une très dangereuse faille dans votre sécurité.<br>
Toutefois, si vous désirez compiler avec des PC disséminés sur la terre entière, passez à travers des tunnels ssh.
 
== Voir aussi ==
 
http://dmucs.sourceforge.net/


{{Copy|16 février 2006|Linux.tar.gz|FDL}}
{{Copy|16 février 2006|Linux.tar.gz|FDL}}

Dernière version du 5 juin 2012 à 18:01


Compilation Distribuée

par Linux.tar.gz

Avant-propos

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. 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. Elle marchera sur n'importe quelle autre distribution.

Pré-requis

Deux machines (ou plus) en réseau.

1-Préparation des serveurs

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

Sur chacune des machines, on lançait:

distccd --daemon

On doit désormais 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
  1. 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 multiplié par 2.

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

Il est à noter que le serveur distcc ne doit pas nécessairement tourner sur la machine qui lance la compilation.

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 compilant pas avec succès, ne soyez donc pas surpris de voir des compilations échouer.
A ce propos je n'ai pas réussi l'intégration de machines 64 bits sous OS 64 bits dans un réseau distcc 32 bits. J'apprécierai quelques commentaires à ce propos.

Enfin, distccd, s'il est accessible depuis internet, représente une très dangereuse faille dans votre sécurité.
Toutefois, si vous désirez compiler avec des PC disséminés sur la terre entière, passez à travers des tunnels ssh.

Voir aussi

http://dmucs.sourceforge.net/

Copyright

© 16 février 2006 Linux.tar.gz

Tête de GNU Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la GNU Free Documentation License, Version 1.2 ou n'importe quelle version ultérieure publiée par la Free Software Foundation; sans section invariante, sans page de garde, sans entête et sans page finale.