Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Présentation de Distcc

Par Aravindan RENGARAMANUJAM Publié le 27/07/2015 à 16:14:42 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Introduction

DistCC est un programme open-source conçu pour partager/distribuer les tâches de compilation entre plusieurs machines d’un réseau.

Il est développé sur GNU/Linux, mais fonctionne également sur d’autres systèmes comme FreeBSD, NetBSD, Darwin, Solaris …

Il est compatible avec différents langages tels que le C, C ++, ou encore l’Objective C.

Sous développement depuis 2002 et actuellement en version 3.1, il a pour finalité de générer le même résultat qu’une compilation locale.

Le réseau dans lequel il fonctionne est composé d’un serveur et de plusieurs clients.

DistCC n’est pas un compilateur, au contraire, il peut être considéré comme le front-end des compilateurs tels que GNU C/C++ compilateur (GCC).

Fonctionnement

Il y’a deux rôles nécessaires pour le fonctionnement de ce programme :

  • Le Server : représente les machines du réseau effectuant la compilation et lançant un daemon distcc.

  • Le client : représente les machines ayant les codes sources devant être compilés Le client envoie code source complet sur toutes les machines (server) à travers le réseau pour chaque tâche devant être effectuée. Une fois la tâche effectuée, les serveurs renvoient le code compilé au client.

Voici une image représentant le monitoring de la compilation distribuée entre plusieurs hôtes de plusieurs fichiers codes sources ainsi que leurs statuts.

Installation

Prérequis : Pour utiliser DistCC, toutes les machines doivent utiliser la même version du compilateur GCC.

Les versions appartenant à la version 3.3.x, où x est différent peuvent fonctionner ensemble mais cependant si l’on mélange les versions (par exemple 3.2.x avec 3.3.x), la compilation risque de ne pas s’effectuer ou alors il peut se terminer sur des erreurs à l’exécution.

Il nécessite donc l'installation des paquets gcc et g++, qui permettent respectivement de compiler du C et du C++.

> sudo apt-get install build-essential 

Ainsi que le package Make sur le Server. Il nous permettra de compiler en local mais aussi de distribuer une compilation.

Les étapes présentées dans cet article sont spécifique à une distribution Debian.

Etape 1 : Installation des paquets sur toutes les machines du réseau (Client et Servers).

> Root@server:# sudo apt-get install distcc 
> Root@client:# sudo apt-get install distcc 

Configuration

Voici le processus de configuration de DistCC sur le client et le serveur.

Nous considèrerons dans cet exemple que les deux machines (Client et Serveur) sont sur le même sous-réseau, ici : « 192.168.0.0/24. »

Les modifications ci-dessous sont à faire sur la machine client

Etape 2 : On commence par modifier le fichier de configuration se trouvant dans :

> vi /etc/default/distcc

On modifie ensuite les valeurs/paramètres des attributs suivants de manière :

  • à démarrer DistCC

  • et d’autoriser le master appartenant au réseau défini

STARTDISTCC = « true »

ALLOWEDNETS = « 192.168.0.0/24 »

LISTENER = « 0.0.0.0 »

Etape 3: Une fois ces modifications terminées, nous devons démarrer les services sur toutes les machines (client et server) :

> Sudo service distcc start 

Utilisation

La compilation d’un code source depuis un client se fait de manière similaire à une compilation locale.

On se place dans le dossier content les sources :

> cd /myProject 

Et enfin on utilise la commande make:

> make helloworld.c CC=distcc

Cette commande make avec en paramètre « CC » va permettre une compilation distribué avec DistCC.

Avantages

DistCC est un outil open source simple à installer et utiliser.

L’un des plusieurs avantages de DistCC est la rapidité fournie par cette technologie.

Il permet à plusieurs machines d’un réseau de partager les tâches de compilation d’un programme et permet d’accélérer son processus.

Ce qui permet usuellement d’obtenir une rapidité de compilation supérieure d’environ deux fois ou plus à une compilation locale.

Il ne requiert pas que toutes les machines partagent un système de fichiers, ou une horloge synchronisé ou d’avoir les mêmes libraires ou de fichiers header installés.

Les différentes machines peuvent éventuellement avoir différents processeurs (i386, PPC) ou système d’exploitation (Linux, BSD) si les cross-compiler sont installées.

DistCC peut également utiliser des tunnels SSH cryptés pour la communication afin de permettre la compilation dans des réseaux inconnus. Et enfin il peut être installé par un utilisateur non root.

Inconvénients

Pour utiliser DistCC, toutes les machines doivent utiliser la même version du compilateur GCC.

Les versions appartenant à la limite 3.3.x, où x est différent peuvent fonctionner ensemble mais si l’on mélange les versions (par exemple 3.2.x avec 3.3.x), la compilation risque de ne pas s’effectuer ou alors il peut se terminer sur des erreurs à l’exécution.

La deuxième désavantage est que seul les tâches de compilation des langages C/C++ /Objective C peuvent être distribué. Il ne peut pas effectuer d’autres tâches telles que le linking.

Le dernier inconvénient réside dans le fait que DistCC n’est livré avec aucune garantie malgré le fait qu’il est utilisé depuis plusieurs années.

Pour aller plus loin

Il existe plusieurs outils disponible séparément afin d’améliorer ou compléter DistCC.

Voici la liste :

  • Ccache est un compiler de cache, il accélère la recompilation en cachant les compilations précédentes et en détectant quand la même compilation est ré-effectué.

  • Dmucs (Distributed Multi-user Compilation System) est un système qui autorise un groupe d’utilisateurs à partager un groupe de compilation. Chaque requête de compilation de chaque utilisateur sera envoyée à la machine la plus rapide disponible à chaque fois.

  • Ccontrol est un programme qui prend en charge les rôles du compilateur, linker et make et lit un fichier de configuration pour décider quoi faire avant de faire appel à eux. Ce qui est utile pour avoir un contrôle centralisé sur les commandes et options, par exemple pour activer ou désactiver DistCC ou Ccache.

  • DistccWebView est un script CGI qui permet d’afficher la liste des daemons qui sont up et down. Le résultat est sous la forme d’une page web.

  • Tcpbalance est un proxy TCP qui permet de faire du Load balancing.

Définitions

  1. Compilation ou Build : se réfère au processus de conversion d’un fichier de code source en un exécutable.

  2. Cross compilation : consiste à compiler un programme pour un environnement d'exécution différent de celui où est effectuée la compilation. Il permet une exécution multiplateforme.

  3. Caching : Stockage temporaire des documents en local pour améliorer les performances

  4. Load balancing est une méthode de distribution de données utilisée pour avoir une utilisation optimale des ressources. Il permet de réduire le temps nécessaire pour effectuer une tâche ou le temps de réponse.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels