Les clusters (résumé)

Source aspirine Posté le 22/06/04 à 19:00:36 par admin

Cluster veut dire grappe en français. C'est une ensemble d'ordinateurs, tous interconnectés, dans le but de partager des ressources informatiques. Chaque ordinateur d'un cluster est appelé noeud.
Par exemple un cluster peut permettre de traiter de concert un même travail sur cet ensemble de machines. Mais il peut aussi permettre de répartir des tâches différentes sur chaque machine.

La grappe doit être constituée d'ordinateur possédant une même architecture, un même environnement d'exécution. Plus précisément, on doit pouvoir compiler une application et l'exécuter sur toutes les machines de la grappe sans re-compilation. Tant que l'homogénéité de l'architecture est respectée elle peut donc être constituée d'ordinateurs possédant des processeurs différents ou de puissances différentes. Nous reviendrons plus tard sur ce dernier point qui n'est de loin pas anodin. Il peut y avoir, par exemple, des systèmes AMD et Intel, mais pas de PowerPC et Sparc. Il va de soi que l'OS doit être strictement le même sur toutes les machines.

Les avantages du cluster par rapport aux super-ordinateurs

Comme les super-ordinateurs (comme les Cray), les clusters sont liés à la quête de puissance donc à la diminution du temps d'éxécution d'un ensemble de tâches.

Cependant ils sont conceptuellement différents*. En effet, les super-ordinateurs sont en général monobloc tandis qu'un cluster est par définition un ensemble de machines interconnectées. D'un point de vue extérieur, un super-ordinateur n'est pas très différent de votre propre machine. Il possède son OS, sa mémoire, ses processeurs, au contraire du cluster qui est constitué de machines fonctionnant de manière indépendante. Sur ce dernier la mémoire n'est donc pas partagée*. Pour vulgariser, on pourrait comparer un super-ordinateurs à un petit génie et un cluster à une classe d'étudiants.

*je donne ici un point de vue général car il existe beaucoup de variantes de clusters et de super-ordinateurs. Il peut arriver que certaines machines soient un mélange des deux concepts.

Un cluster comporte donc nombreux avantages:
*) le prix: Au lieu d'acheter un PC chez le marchand du coin de votre rue, vous en acheter simplement une dizaine, une centaine ou plusieurs milliers. Les machines achetées seront directement au top actuel et à un prix abordable puisque constituées de matériel largement répandu. Par contre vous risquez d'avoir du mal à dénicher un super-ordinateur dans l'arrière boutique de votre revendeur. Ces machines sont spécialement conçues pour être des super-calculateurs. Le nombre de client sur ce marché étant très réduit, leur prix peut atteindre des sommes colossales.
*) la modularité: Il est possible d'ajouter à tout moment une machine supplémentaire dans une grappe pour obtenir plus de puissance. De plus comme ses ordinateurs sont de simples PC, ils peuvent être mis à jour comme votre ordinateur personnel. Or ce n'est que très rarement le cas sur les super-ordinateurs.
*) la souplesse et la robustesse: Cette qualité découle directement de la modularité. Si un des noeuds tombent en panne, il suffit simplement de le retirer et les données perdues, s'il y en a (en général celles du calcul en cours), seront celles qui étaient présentent sur cette machine uniquement. Par contre, si un composant du super-ordinateur brûle, il est probable que vous soyez obligé de réparer avant de pouvoir continuer et s'il y a des données perdues...

Cependant on trouve encore au super-ordinateur quelque utilité. Imaginez que vous deviez donner un problème assez compliqué. Ce problème peut-être décomposer en plusieurs sous problèmes, mais leur interdépendance fait qu'il est impossible de résoudre le second sous problème sans la réponse au premier. A qui le donneriez-vous? Au petit génie? Ou à la classe d'étudiants? Quel sera le résultat si vous choisissez la seconde possibilité?.
On voit donc qu'un cluster est une bonne solution pour les problèmes "fragmentables" en sous problèmes relativement indépendant, mais est complètement impuissant pour un problème bloc.

Il serait faut de penser que la définition d'un cluster se limite à une grappe d'ordinateur. En effet, il y a aussi les clusters de stockage qui sont des grappes d'unité de stockage (disques durs montés en RAID par exemple). Le cluster ne se limite pas non plus à une simple recherche de puissance, il peut jouer un rôle d'assurance en cas de panne. Il sera donc constitué de machines redondantes par exemple. Si une des machines lâche une autre prendra le relais.

Les méthodes de communication entre les noeuds

TCP/IP représente le protocole réseau du moment. Cependant il diffuse trop de paquets, qui ne sont pas forcément nécessaires dans le cas d'un réseau fermé comme un cluster. A la place, il est possible d'utiliser le Direct Memory Access (DMA, similaire à celui utilisé par certains périphériques d'un PC comme les disques) à travers ses noeuds. Il existe aussi des systèmes de communication dit de low-overhead comme Message Passing Interface (MPI), qui est une API (Application Program Interface) pour développeurs d'applications de calculs parallèles. C'est sur cette dernière API que nous reviendrons dans un prochain article.