Précédent : Langages dédiés et architectures logicielles
Remonter : Résultats nouveaux Suivant :
Contrats industriels
(nationaux, européens et
Participants : Gilles Muller, Charles Consel, Laurent
Bercot, Philippe Boinot, Rémi Douence, Scott Thibault.
Mots clés : optimisation de systèmes d'exploitation, systèmes distribués, RPC .
Glossaire :
Micro-noyau noyau de système minimal qui offre uniquement les notions d'espace d'adressage, de fil de contrôle et d'objet mémoire. Dans un système reposant sur un micro-noyau, la plupart des fonctions complexes (gestion réseau, système de fichiers, processus utilisateur Unix/NT) sont exportées hors du micro-noyau et sont implémentées par des processus spéciaux appelés serveurs.
Communication inter-processus (IPC) mécanisme permettant à différents processus de s'échanger de l'information. L'IPC est un des principaux goulots d'étranglement d'un système reposant sur un micro-noyau, puisque l'éclatement des fonctionnalités du système entre les serveurs multiplie le nombre des communications par rapport à un système monolithique traditionnel.
Appel de procédure à distance (RPC) mécanisme de communication dans les systèmes distribués qui permet à un processus d'appeler une procédure résidant sur une machine éventuellement différente de la sienne.
L'appel de procédure à distance (RPC) est l'un des paradigmes sur lesquels reposent les systèmes distribués. De ce fait, l'optimisation du RPC a fait l'objet de nombreuses études. Nous nous sommes plus particulièrement attachés à l'optimisation de la mise en oeuvre de l'appel de procédure à distance développé par Sun en 1984. L'architecture du RPC implémenté par Sun est constituée de multiples micro-protocoles modulaires. Toutefois, chaque utilisation du RPC repose sur une instance bien précise de ces protocoles, ce qui en fait un très bon candidat pour la spécialisation. Nous obtenons un gain de performance allant jusqu'à 1,5 sur un appel complet (réseau inclus). Sur l'encodage des données au sein du talon, le facteur d'optimisation va jusqu'à 3,7 [[11],[22],[17]]. Les retombées de cette étude sont multiples : (i) la mise en évidence de nouveaux besoins d'analyses, (ii) la validation de Tempo sur du code existant, non écrit spécifiquement pour notre système, (iii) l'illustration du potentiel d'optimisation d'un outil tel que Tempo sur des programmes reposant sur une architecture logicielle du type de celle du RPC de Sun.
Dans le cadre d'un projet CNET (voir module 7.1), nous avons étudié l'optimisation de la communication inter-processus (IPC) au sein du micro-noyau Chorus. Il est à noter que Chorus a déjà été largement optimisé au moyen de techniques manuelles. En conséquence, les opportunités de spécialisation restantes relèvent soit d'invariants valides à certains moments de l'exécution, soit d'invariants valides à la compilation mais inexploitables sans outil automatique. Pour exploiter ces invariants, nous avons conçu une technique de spécialisation incrémentale reposant sur deux étapes : (i) une spécialisation à la compilation ``traditionnelle'', (ii) une spécialisation à l'exécution du code obtenu précédemment. En associant ces deux techniques de spécialisation, nous avons obtenu un gain de performance de 1,5 sur un IPC local [[11]].
Les langages dédiés (voir module 6.2) ouvrent des perspectives intéressantes pour la conception de systèmes d'exploitation en permettant d'effectuer des vérification formelles sur les programmes (vérification de propriétés liées au domaine) et en améliorant la productivité. Nous avons expérimenté l'utilisation des langages dédiés dans le cadre de deux exemples système : la programmation de réseaux actifs avec PLAN-P (voir module 5.5) et la programmation de drivers graphiques X11 avec GAL (voir module 5.4). Dans le cadre d'un contrat avec le CNET (voir module 7.3), nous étudions l'utilisation des langages dédiés pour réaliser le processus d'adaptation au sein de systèmes d'exploitation réflexifs.