Le système DOSMOS est complété par un outil de traçage d'exécution nommé DOSMOS-Trace [Rey95, BLR96a]. L'objectif de cet outil est de permettre à l'utilisateur de comprendre le comportement de son applicationet d'analyser ses performances afin de lui permettre d'optimiser sa programmation. DOSMOS-Trace a été conçu avec un double souci : l'extensibilité et la minimisation de l'intrusion.
Le traçage d'applications en mémoire distribuée partagée est fondamentalement différent du traçage d'applications écrites en echange de messages[BLR96a]. En effet, il ne s'agit pas de tracer les communications inter-processeurs, sur lesquels l'utilisateur n'a aucune prise directe, mais de tracer l'activité de l'espace des variables partagées, afin de pouvoir isoler les situations problématiques (goulots d'étranglement, effets ping-pong, mauvaises structurations des groupes...). Pour ce faire, DOSMOS-Trace s'appuie sur deux concepts originaux.
Un méta-objet est associé à chaque objet et chaque copie d'objet. Un méta-objet est un tuple (enregistrement) contenant autant de champs que de types d'informations à tracer (e.g., nombre et type des accès, origine des accès (locaux, intra-groupe, inter-groupe), processus accédant fréquemment à l'objet...). A la différence des traces d'exécution brutes (cf. ci-dessous), les méta-objets sont des structures dynamiques stockées en mémoire. C'est donc sur ces données que s'appuie DOSMOS-Trace pour implémenter ses fonctionnalités d'analyse d'exécution dynamique (temps réel).
La gestion des méta-objets est assurée par des processus de gestion d'événements (PGE). Ces PGE sont des processus spécifiques répartis dans l'ensemble du réseau. Ils collaborent avec les processus mémoire qui leur transmettent les traces d'exécution brutes. Les PGE compilent ces traces dans les méta-objets. Un PGE peut ``superviser'' plusieurs processus mémoire ; à l'inverse, un processus mémoire ne collabore qu'avec un seul PGE. Les PGE ont une triple fonction : gérer les méta-objets, stocker les traces sur disque (il est optimal d'associer à chaque PGE un disque local dédié), répondre aux requêtes de l'utilisateur. En effet, qu'il s'agisse de traçage temps réel ou post-mortem, l'utilisateur soumet ses requêtes à un processus spécifique (dit processus de visualisation) qui les rediffuse vers les PGE concernés et fusionne leurs réponses avant de fournir une réponse soit sous la forme de texte soit sous la forme de graphiques (cf. figure 3).
Cet outil permet ainsi à l'utilisateur d'isoler des problèmes et/ou des optimisations possibles [BLR96b] dans la programmation de son application (e.g. réduction des effets ping-pong). L'architecture logicielle sur laquelle se fonde cet outil permet d'assurer une gestion répartie des traces d'exécution. Cette répartition, tant au niveau des traitements que du stockage des informations, garantit une bonne extensibilité et une faible intrusion. Les tests que nous avons effectués ont ainsi montré que, dans de bonnes conditions (i.e. avec plusieurs disques disponibles sur le réseau), l'intrusion était de l'ordre de 10-15% du temps total d'exécution.
La figure 3 montre deux vues de l'exécution d'une application DOSMOS. La figure 3.a présente un graphique montrant la répartition et le nombre des accès (en lecture dans notre cas) en fonction du temps. Les barres en gris foncé représente les accès locaux (accès à un objet dont on détient une copie valide), celles en gris clair les accès intra-groupe et celles en noir les accès inter-groupes. Ce type de graphiques permet d'évaluer la pertinence de la structuration des groupes. La figure 3.b représente l'historique des accès (écritures et lectures) effectués sur une variable. Il est également possible d'obtenir l'historique des accès effectués par un processus application sur l'ensemble des variables auxquelles il a accédé.
Figure 3: Exemples de vues obtenues avec DOSMOS-Trace