Sous-sections

Support système pour grappes de machines

Mots clés : gestion de mémoire, grappe, cluster, protection, capacité, gestion de cache, mémoire virtuelle répartie .

Résumé :

Les serveurs constitués de grappes de machines ( clusters) ont surtout été utilisés pour des applications ayant de grands besoins en calcul. L'objectif de nos recherches est d'exploiter le potentiel de ces grappes pour la construction de serveurs d'information. Deux aspects sont particulièrement explorés.

  1. Gestion des ressources. Étude des politiques de gestion de ressources (placement et migration des objets et des activités) permettant de garantir des bonnes performances aux applications, en fournissant une interface d'accès commode.
  2. Communication à hautes performances. Construction de services système permettant d'exploiter le potentiel des réseaux d'interconnexion à haut débit et faible latence, pour la coordination d'activités et le partage d'information. Le service étudié en priorité est celui de mémoire partagée (gestion des caches, protection).

Un nombre croissant d'applications font appel à des serveurs devant manipuler des volumes d'information très importants pour fournir des services à un grand nombre de clients. Des exemples en sont les bases et entrepôts de données, les serveurs pour le Web (serveurs primaires et serveurs de caches) et les serveurs répartis de fichiers.

Pour répondre à ces besoins, on voit se développer des architectures en grappes ( clusters) regroupant un ensemble de serveurs homogènes reliés par un réseau à hautes performances. Les avantages attendus sont: l'extensibilité (adjonction incrémentale de serveurs); la disponibilité (serveurs mutiples); l'amélioration du rapport coût-efficacité (utilisation de processeurs standard).

Le développement du logiciel de base pour l'exploitation des machines en grappes reste une tâche difficile. Les recherches actuelles visent à exploiter au mieux les possibilités de la technologie et, en particulier, les deux avancées suivantes :

Les principales directions de recherches actuellement poursuivies sont indiquées ci-après.

Gestion des caches

Les caches logiciels constituent le moyen privilégié de réduction de la latence pour l'accès à l'information dans un système réparti. Un cache est une zone de mémoire dans laquelle sont conservées les données ayant fait l'objet d'accès récents. Comme les applications présentent en général la propriété de localité de référence, les données en cache ont une probabilité élevée d'être réutilisées.

Dans le cadre de notre travail sur les serveurs en grappes, il y a deux utilisations possibles des caches: pour la gestion interne de la mémoire de la grappe, d'une part; en tant que service fourni aux applications, d'autre part.

Plusieurs méthodes ont été proposées pour améliorer les performances des caches. Pour les caches internes, une voie prometteuse consiste à prendre en compte globalement l'ensemble des caches locaux des processeurs de la grappe et à gérer cet ensemble comme une ressource unique. Il peut en effet être plus rapide de charger une information depuis le cache d'un autre processeur que depuis le disque local. Un exemple de réalisation fondée sur ce principe est GMS [FMP+95].

Une autre technique, utilisable aussi bien en interne que par les applications, est celle du préchargement. Néanmoins, elle doit être utilisée à bon escient, car les erreurs de préchargement sont très coûteuses. Une idée prometteuse est celle du préchargement sur information [PGG+95] : les applications fournissent des informations sur leurs accès aux données (données utilisées, corrélations, durées de vie probables, etc); ces informations sont exploitées pour le préchargement et la conservation en cache des données.

Une contribution du projet Sirac à ce domaine est le mécanisme de cohérence ``sur mesure'' [10] introduit dans la gestion des caches du service de mémoire répartie Arias [5]. Nos travaux actuels visent à résoudre les problèmes du passage à l'échelle des techniques de gestion globale des caches internes, et à étudier le comportement de caches d'applications (serveur Web) en vue d'un pilotage éventuel du préchargement ou de l'élimination de données.

Serveurs en grappes

Les avantages attendus des grappes de machines nécessitent un mécanisme d'interconnexion à hautes performances. Un débit élevé est nécessaire quand un volume important d'information doit être transféré; une latence faible est nécessaire pour des échanges fréquents de faible volume comme les messages de commande utilisés pour la gestion interne du système.

Plusieurs technologies de réseaux d'interconnexion sont récemment apparues et sont expérimentées. Citons ATM, Myrinet, MemoryChannel. Elles utilisent des techniques de commutation, ce qui assure une bonne capacité de croissance. Le problème principal est la conception et la réalisation d'un service de communication logiciel qui permette, au niveau des applications, d'exploiter au mieux les performances brutes autorisées par le matériel.

La technologie SCI ( Scalable Coherent Interface)[*]repose sur un couplage direct de mémoire à mémoire entre deux machines. Ce dispositif permet à un processeur de lire et d'écrire physiquement dans la mémoire d'un autre processeur sans l'interrompre. Par rapport à d'autres systèmes d'interconnexion, SCI fournit des performances brutes élevées, tant en débit qu'en latence.

Le projet Sirac a lancé en 1997 une activité de recherche visant à explorer le potentiel de SCI pour la réalisation de grappes de serveurs à hautes performances. Le problème posé est celui de la réalisation de services de base pouvant être intégrés à un système d'exploitation, pour réaliser le partage de mémoire et la synchronisation d'activités. Les techniques utilisées pour la gestion globale de la mémoire de la grappe s'inspirent à la fois de celles de GMS (cité plus haut) et de celles utilisées pour les architectures CC-NUMA [VDGR96]. Les classes d'applications visées sont celles qui nécessitent l'accès efficace à de grandes quantités d'information (serveurs Web, systèmes de fichiers). Les premiers résultats de cette activité sont décrits en 6.2.