TIP Compiler sur plusieurs machines à la fois avec distcc

Un article de Gentoo Linux Wiki.

Sommaire

[modifier] Introduction à distcc

Gentoo introduit la possibilité d'utiliser plusieurs machines simultanément lors de la compilation de sources, pendant les emerge par exemple.

La documentation officielle explique très clairement comment installer distcc, c'est pourquoi je n'y reviendrais pas.

Nous nous intéresserons ici à une série de tests que j'ai effectués dans le but d'établir un comparatif afin de juger de l'intérêt d'utiliser distcc au lieu d'une compilation locale.

[modifier] Machines utilisées

  • srv : P4 - 1,7 GhZ - 512 Mo - Gentoo - connecté sur le réseau local
  • athlon : AMD 64 - 2,5 GhZ - 1512 Mo - Gentoo - connecté sur le réseau local
  • duron : Duron - 0,8 GhZ - 512 Mo - Gentoo - connecté sur le réseau local
  • paris : P4 - 3,2 GhZ - 1512 Mo - Debian - connecté par ADSL (1Mo montant maxi)

Toutes les machines sont en architecture i686, avec un gcc 3.4

[modifier] Méthode de test

Pour évaluer le temps de compilation, j'ai compilé le serveur httpd-2.0.58 à plusieurs reprises, avec différentes configurations.

Après un premier ./configure, le code exécuté à chaque test est le suivant :

Code : Compilation de httpd
make clean ; make -j?

? est à remplacer par la valeur de MAKEOPTS de chaque ligne de test.

localhost sera dans un cas l'Athlon et dans l'autre le Duron, afin de voir la différence entre une machine puissante et une autre qui l'est beaucoup moins.

[modifier] Résultats des tests

MAKEOPTS Hôtes Athlon Duron
1 0 (sans distcc) 2:40 5:10
2 5 localhost paris 5:00 6:15
3 5 localhost paris,lzo 2:50 4:50
4 3 paris,lzo 5:40 6:40
5 5 srv paris,lzo 3:00 4:10
6 5 srv,lzo paris,lzo 3:00 4:00
7 5 paris,lzo srv,lzo 4:00 5:20
8 5 localhost srv 2:20 4:20
9 5 localhost srv,lzo 2:20 4:10
10 3 srv 2:40 4:20
11 5 localhost srv paris,lzo 2:30 4:20

[modifier] Exploitation des résultats

Tout d'abord, il faut avouer que les résultats sont assez décevants. On est très loin des performances d'un véritable cluster. Ceci étant, essayons tout de même de décortiquer ces résultats.

[modifier] Athlon

  • Sur cette machine, le gain est vraiment minime. Exporter une partie de la compilation n'apporte pas de réelle valeur ajoutée, tant la machine est rapide à l'origine.
  • On remarque la grande différence entre les lignes 2 et 3 montrant l'importance du paramètre lzo lorsque la machine qui participe à la compilation est connectée par une liaison peu rapide comme ici en ADSL.
  • La ligne 4 montre l'importance de laisser localhost lorsque la machine de soutien est distante.
  • Les lignes 6 et 7 démontrent clairement l'importance de l'ordre des hôtes.
  • Les lignes 8 et 9 indiquent que le paramètre lzo est peu important lorsque la machine est connectée au réseau local.

[modifier] Duron

  • Sur cet ordinateur, le gain est un plus significatif. Exporter une partie de la compilation apporte ue certaine valeur ajoutée, mais on aurait pu s'attendre à mieux vu les performances des machines de soutien. Ici c'est la ligne 6 qui apporte les performances les plus intéressantes.
  • On remarque la grande différence entre les lignes 2 et 3 montrant l'importance du paramètre lzo lorsque la machine qui participe à la compilation est connectée par une liaison peu rapide comme ici en ADSL.
  • Les lignes 6 et 7 démontrent clairement l'importance de l'ordre des hôtes.
  • Les lignes 8 et 9 indiquent que le paramètre lzo est peu important lorsque la machine est connectée au réseau local.

[modifier] Conclusion

Que la machine maître soit rapide ou pas, les configurations les plus avantageuses sont les mêmes. En revanche, lorsque l'ordinateur est rapide à la base, le gain est assez faible. Pour une machine lente, on peut obtenir un gain de 10 à 20%.

Au vu de ces résultats, distcc n'apparaît donc pas comme la solution miracle pour éviter les compilations noctures d'OpenOffice ou de KDE...

--Srvremi 25 jul 2006 à 08:20 (UTC)