Choix du matériel
A cause de toutes les contraintes dues à la mise en commun des ressources, le choix du matériel est
important, que ce soit pour le couple processeur / mémoire ou pour l'interface réseau. Tout d'abord, ce
n'est pas une technique miracle, si on met quelques dizaines de Pentium de première génération dans un
cluster, il ne faut pas s'attendre à avoir des performances dignes d'un unique processeur de dernière
génération. Il faut aussi faire attention à l'équilibre entre les performances des processeurs et celui du
réseau. En effet, plus les processeurs iront vite, plus le réseau de communication devra suivre. Sinon une
grande partie de la puissance de calcul sera perdue lors de l'attente des communications et
synchronisations. A l'inverse, mettre un réseau ultra rapide (et donc cher) avec des processeurs
relativement lents, n'est pas un bon choix non plus, le réseau étant sous utilisé.
Processeurs
Là encore, il faut faire un compromis entre le coût par noeud et les performances. Comme souvent en
informatique, il faut éviter de se précipiter sur la dernière technologie sortie. En générale, il vaut mieux
attendre quelque temps pour la laisser mûrir et avoir plus de recul sur ses conséquences et ses réelles
performances. Ceci est d'autant plus vrai pour les clusters de moyenne et de grande taille vu le nombre
important de machines.
Il est donc préférable de prendre une technologie de processeurs et de mémoires qui a déjà fait ses
preuves et de proportionner sa puissance avec les applications destinées aux clusters. Le nombre de
noeuds doit aussi être en rapport avec la taille du problème que l'on cherche à résoudre. Comme indiqué
dans la partie sur le calcul parallèle et distribué, plus on ajoute de processeurs, plus on s'approche de la
limite théorique du gain de performance. Mais, cette formule ne tient pas compte d'un phénomène
important. Pour un problème donné, plus le nombre de noeuds sur lequel on le répartit augmente, plus la
part de travail de chaque noeud est petite. Mais il arrive un moment où le temps perdu (pour le calcul)
dans la distribution des données et dans le réassemblage du résultat devient trop important, ce qui peut
entraîner une diminution les performances, contrairement à ce que l'on pourrait croire. Là encore, il n'y a
pas de principes généraux, il faut étudier le problème et faire des essais pour trouver le compromis idéal.
Le matériel du cluster doit être le plus homogène possible pour permettre une administration aisée. Pour
assurer la portabilité des programmes, il convient de ne pas mélanger des architectures différentes
(Power PC, PC 32bits, PC 64bits, Station Sparc, etc.).
Mémoires
En ce qui concerne la mémoire, il existe différents types, il faut donc faire attention au choix de la carte
mère, car les différents types ne sont pas forcément compatibles entre eux. On peut citer par exemple la
SDRAM, la SDRAM DDR, la SDRAM ECC, ...
La SDRAM était la mémoire traditionnelle, mais elle est maintenant remplacée par la SDRAM DDR qui
est capable de transférer des données à la fois sur le front montant et sur le front descendant du signal
carré de l'horloge. D'où des débits théoriques deux fois plus rapides et des temps de latence plus faibles.
Il y a aussi les mémoires dites "registred" ou "buffered". On trouve sur ces barrettes, des mémoires
tampons qui permettent de mettre plus de 16 composants DRAM sur la même barrette et ainsi d'avoir la
possibilité de mettre plus de 4 barrettes de mémoire sur une carte mère.
Il est aussi possible de rajouter des méthodes de détection et de correction d'erreurs. C'est pourquoi, il
existe des barrettes de mémoire avec un contrôle de parité, mais ce contrôle nécessite de la place, donc
pour avoir la même place utilisable il faut avoir plus de place réelle (environ 12% de pertes), elles sont
donc plus chères. De plus, en cas d'erreur détectée (ce système n'est capable de détecter qu'une erreur
par octet), le système d'exploitation est averti et c'est à lui de réagir (arrêt de l'application en cours ou
arrêt totale de la machine) mais il n'y a pas correction de l'erreur (car impossible avec un seul bit de
parité). C'est pourquoi il existe un autre type de mémoire : la mémoire ECC (Error Control Correction) qui,
en réservant une partie de la place mémoire disponible, permet grâce à un algorithme de correction
d'erreurs de garantire l'intégrité des données présentes en mémoire. Bien sur, cela à un coût financier, un
léger coût en terme de performance et toutes les cartes mères ne l'acceptent pas.
Aujourd'hui la mémoire avec contrôle de parité n'est pratiquement plus utilisée au profit de la mémoire
ECC. Et on trouve aussi de la mémoire SDRAM DDR ECC registred.
Conception d'un système à haute performance - Le cluster 2/4 Copyright © CETMEF 2004