Thèse soutenue

Contribution à l'élaboration d'ordonnanceurs de processus légers performants et portables pour architectures multiprocesseurs

FR  |  
EN
Auteur / Autrice : Vincent Danjean
Direction : Raymond Namyst
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance en 2004
Etablissement(s) : Lyon, École normale supérieure (sciences)

Mots clés

FR

Résumé

FR  |  
EN

En informatique, la notion de processus léger ou thread est désormais omniprésente. En effet, les threads permettent à un programme d'une part d'exploiter pleinement les ordinateurs multiprocesseurs et d'autre part d'exprimer son parallélisme intrinsèque. Dans le domaine du calcul hautes performances, les threads permettent de recouvrir des communications ou plus généralement des entrées/sorties avec du calcul. Ils permettent aussi aux divers composants de l'application de progresser indépendamment les uns des autres, ce qui est nécessaire avec l'utilisation d'environnements de programmation toujours plus complexes comme MPI ou Corba. Mes travaux avaient pour objectif principal d'aboutir à la conception d'une bibliothèque de threads performante sur une vaste gamme d'architectures (machines mono ou multiprocesseurs, technologie "multithreading simultané",. . . ) et capable d'offrir les fonctionnalités demandées par les programmes de calcul hautes performances. Dans un premier temps, j'ai proposé une extension du modèle des Scheduler Activations pour le noyau Linux permettant d'être réactif aux interruptions dans une bibliothèque de threads utilisateurs. J'ai ensuite étendu ce mécanisme de manière à unifier la gestion des interruptions et des scrutations dans un environnement multithreadé. Enfin, j'ai proposé un mécanisme de prise de traces permettant de reconstituer précisément le déroulement d'un programme multithreadé, y compris lorsque l'ordonnancement est à deux niveaux. Ces travaux ont été implémentés au sein du logiciel PM2. La bibliothèque Marcel offre des threads performants sur une vaste gamme de processeurs et de systèmes en restant suffisamment flexible pour permettre aux applications qui le nécessitent de diriger précisément l'ordonnancement de leurs threads. Les applications peuvent être tracées de manière à pouvoir reconstituer et observer leur comportement précis. La trace obtenue peut être convertie au format du logiciel Pajé qui permet alors de visualiser graphiquement le déroulement de l'application.