Accueil DexTER | Accueil grant
télécharger au format PDF

Fiche projet - grant

Grille à répartition de charge adaptative

Constituer une grille de calcul efficace à l'échelle d'internet lui-même est un défi de taille. Les systèmes de répartition de charge classiques reposent sur un allocateur centralisé qui a besoin d'une information la plus complète possible pour prendre judicieusement ses décisions. Et plus la taille de la grille augmente plus le système de répartition risque lui-même de s'engorger. De plus la difficulté sera considérablement accrue si on admet dans la grille des noeuds de calcul de natures différentes :

SVG non pris en charge par le navigateur, cliquer sur le lien ci dessous pour télécharger le fichier.


Grille à répartition de charge centralisée

Grant propose la mise en oeuvre d'une grille de calcul à l'aide d'algorithmes biomimétiques. Ces algorithmes sont de bons candidats pour contourner les difficultés énumérées plus haut : ils sont conceptuellement adaptatifs et capables de fonctionner à partir d'informations incomplètes (erreurs de mesures, latences) et changeantes.

La grille est composée d'un ensemble de noeuds qui forment un réseau connexe selon une relation de voisinage. Chaque noeud ne permet d'atteindre qu'un nombre limité de noeuds voisins mais il doit exister au moins un chemin pour se rendre d'un noeud quelconque à un autre. Chaque noeud peut soumettre des tâches à un autre qui lui-même pourra les relayer à un troisième, etc... Le problème fondamental de la répartition de charge devient assimilable à du routage. Une version biomimétique en est la collecte de nourriture par les fourmis : les noeuds sont des réservoirs plus ou moins importants de nourriture et les tâches à faire exécuter par les noeuds sont des fourmis. La relation de voisinage n'est pas une relation hiérarchique et tous les noeuds sont fonctionnellement rigoureusement équivalents. L'absence de tout superviseur centralisé augmente la robustesse du système. La défaillance individuelle d'un noeud n'a aucun impact à l'échelle de la grille tant que cela ne brise pas la connexité du graphe de voisinage.

SVG non pris en charge par le navigateur, cliquer sur le lien ci dessous pour télécharger le fichier.


Grille à répartition de charge distribuée

Transport des requêtes par fourmis artificielles

Tous les noeuds de la grille sont d'un point de vue fonctionnel strictement identiques. Chacun est capable de prendre en charge le traitement d'une tâche ou de relayer une requête vers un autre noeud. Chaque noeud connaît un nombre limité de noeuds voisins et la répartition de charge agit localement pour déterminer à quel noeud confier une requête : soi-même ou l'un des noeuds voisins connus. Evidemment le noeud choisi, voyant arriver la requête fait de même et éventuellement dirige lui-même la demande vers un troisième noeud, et ainsi de suite. Affecter une tâche à un noeud dans un tel réseau s'apparente à du routage, on parcourt le réseau noeud par noeud jusqu'à la destination avec la particularité suivante : dans notre cas la destination n'est pas déterminée à priori.

Le modèle des fourmis est transposable à la répartition de charge dès que celle ci peut également être traitée comme un problème de routage. La non connaissance de la destination pour chaque requête ne pose pas de problème puisque le modèle utilisé répond au même critère en réalité : les sources de nourriture ne sont au départ pas connues des fourmis. Elles sont découvertes au fur et à mesures et apparaissent ou disparaissent selon des événements non maîtrisés.

Le réseau de noeuds constitue l'environnement dans lequel les fourmis sont plongées. Les fourmis à la recherche de nourriture sont les tâches à la recherche d'un processeur pour être exécutées. Les fourmis parcourent d'abord au hasard le réseau jusqu'à aboutir à un noeud qui les accepte. Lorsque le travail est terminé, le chemin ayant permis d'atteindre le noeud est marqué. Ce marquage plus ou moins éphémère servira ensuite aux autres fourmis à trouver un chemin menant à un processeur dans le réseau. Afin de répartir efficacement la charge, le marquage doit être proportionnel à la quantité de nourriture, c'est à dire à la puissance de calcul disponible sur un noeud. Si un noeud devient trop chargé, les tâches-fourmis en reviennent moins rapidement, le marquage vers ce noeud s'atténue et il apparaît alors comme un moins bon candidat.

Tout le problème de la répartition de charge se réduit maintenant à une gestion appropriée du marquage des liens inter-noeuds. Ce marquage peut être élémentaire. Un incrément fixe pour chaque terminaison de tâche est suffisant pour un renforcement des routes menant à de bons noeuds. Il est toutefois possible d'accélérer l'apprentissage du réseau en utilisant un marquage lié à la puissance constatée. Ainsi les incidences de situations trompeuses aléatoires (par exemple tâche très courte affectée à un mauvais noeud) seront limitées. Le problème n'est pourtant pas trivial : il n'y a pas d'indice de puissance absolue. Il est déjà difficile de classer des processeurs selon un axe de puissance unique. La mesure de la puissance réelle disponible peut s'appuyer sur un ou plusieurs de ces critères :

La fonction d'évaluation n'a toutefois pas besoin d'être totalement absolue sur tout le réseau, il suffit qu'elle le soit pour tous les éléments pris en compte lors du routage d'une tâche. La fonction d'évaluation peut donc être locale à chaque noeud routeur si elle est appliquée de façon identique à tous les noeuds voisins connus.

Mise en oeuvre

L'ambition d'une grille déployable sur internet à l'échelle mondiale implique la capacité d'y accueillir des noeuds de toutes sortes : machines et systèmes d'exploitation variés. Ceci nous pousse à choisir des technologies portables pour le transport des requêtes et l'exécution des tâches :

Dans la première phase d'évaluation de l'algorithme de routage des tâches, la mise en oeuvre se réduit à un environnement hétérogène simulé sur un unique poste : ceci essentiellement pour des raisons économiques et pratiques. Le travail sera transposable directement à un véritable environnement réparti par une simple révision de la mise en oeuvre des interfaces de communication entre noeud :

Dans la deuxième phase, le système est mis en oeuvre sur plusieurs ordinateurs reliés à internet. La communication émulée dans la simulation est remplacée par le protocole de communication XML-RPC et un problème facilement parallélisable (le calcul de l'image de l'ensemble de mandelbrot) a été confié à la grille.

SVG non pris en charge par le navigateur, cliquer sur le lien ci dessous pour télécharger le fichier.


Topologie de voisinage du réseau simulé

SVG non pris en charge par le navigateur, cliquer sur le lien ci dessous pour télécharger le fichier.


Topologie de voisinage du réseau réel

Résultats expérimentaux

Réseau simulé

Notre répartition de charge a été confrontée à trois autres systèmes à titre de comparaison :

  • "Random" : chaque noeud est choisi de façon totalement aléatoire. Il est bon de vérifier que le système proposé est capable de faire mieux que le hasard.
  • "Round Robin" : chaque noeud est choisi successivement sans tenir compte de la charge ou des performances. Il s'agit du système de répartition le plus simple à mettre en oeuvre et qui l'est effectivement très souvent. Il est très efficace dans un environnement ou noeuds et tâches sont homogènes.
  • "Best" : sélection du meilleur noeud à l'instant de l'affectation. Cette méthode est très simple et permet des performances proches de l'idéal. Ce n'est pourtant pas le choix optimal car il faudrait en réalité considérer le meilleur noeud pour toute la durée de la réalisation de la tâche à affecter donc être capable d'anticiper les variations de charge de tous les noeuds.

Grant parvient à répartir la charge aussi bien que le meilleur algorithme déterministe testé (Best). Même s'il y a un surcout induit par la première phase d'exploration assez aléatoire, il parvient dans une seconde phase à mieux transférer la charge vers des noeuds de plus faible capacité quand le noeuds les plus puissants deviennent surchargés.

Comparaison charge globale
Comparaison charge globale
Répartition des tâche par 'Best'
Répartition des tâche par 'Best'
Répartition des tâches par Grant
Répartition des tâches par Grant

Démonstrateur réduit

Le calcul de l'ensemble de Mandelbrot a été réalisé par une petite grille d'une dizaine d'ordinateurs de type PC répartis sur trois sites. Ont participé simultanément des PC animés par Linux (plusieurs distributions) et Windows XP. Le seul objectif de l'expérience a été de vérifier le bon fonctionnement du système sur un cas concret. Chaque noeud a pris en charge une portion du problème et le calcul d'une image de 10000 pixels de coté a été segmenté par le calcul de 100 images de 1000 pixels de cotés sur l'ensemble de la grille et le travail a été accompli environ 8 fois plus rapidement que sur le PC témoin qui a assumé seul l'intégralité du même calcul.

Travaux à venir

Copyright (c) DETEXIA 2009,  mis à jour le : mardi 2 mars 2010, 15:50:51 (UTC+0100)