• Aucun résultat trouvé

Expériences relatives à la création des objets

Chapitre V Une architecture flexible

V.2.1 Expériences relatives à la création des objets

Dans cette architecture, deux types de mesures peuvent être faites concernant la création des objets : une mesure du temps de création du couple objet-métaobjet, à partir du serveur qui implémente l’objet lui-même, et une mesure du temps de créa- tion d’une réplique à partir de la fabrique d’objets.

V.2.1.1 Création du couple objet-métaobjet

La première de ces mesures concerne donc la création d’un objet réifié à partir d’un serveur et est à comparer avec la création du même objet mais non-réifié. En effet, la création d’un objet réifié implique, en plus de la création de l’objet lui-même, l’appel à la fabrique de métaobjets pour la création du métaobjet, ainsi que le proto- cole d’initialisation entre objet et métaobjet (Meta_Startup/Base_Startup).

Ces performances ont été relevées pour les deux versions de la fabrique de métaob- jets décrites dans la section précédente : la première (fabrique 1) crée les métaobjets dans son propre espace d’adressage, et la seconde (fabrique 2) les crée dans des processus indépendants en utilisant la fabrique d’objets. Les résultats de ces diffé- rentes expériences sont donnés dans le tableau 32.

La création du métaobjet est relativement peu coûteuse : le coût de 7 milli-secondes environ inclut la création du métaobjet, ainsi que trois invocations CORBA (Make-

Metaobject,Meta_Startup et Base_Startup). En revanche, il apparaît clairement que

la création d’un métaobjet dans un processus indépendant, avec la fabrique 2, est beaucoup plus coûteuse, mais nécessaire pour le confinement d’erreurs

V.2.1- Expériences relatives à la création des objets 133

(cf. V.2.1.3). Ce coût inclut des lectures des fichiers de configuration, la création d’un nouveau processus et le lancement d’un exécutable (40 ms. environ) en plus de la création du métaobjet et des trois invocations décrites précédemment. Ce résultat peut être grandement amélioré en modifiant les fabriques d’objets et de métaobjets pour qu’elles ne lisent qu’une seule fois leurs fichiers de configuration. On peut leur ajouter une méthode pour leur faire relire ceux-ci lorsqu’ils sont modifiés, à la manière du serveur inetd sous Unix.

V.2.1.2 Création de répliques

La seconde mesure intéressante est celle de la création d’un objet (une réplique) à partir d’un client de la fabrique d’objets. En effet, ce temps inclut non seulement les opérations précédentes (création de l’objet et de son métaobjet), mais également la création d’un nouveau processus. Comme nous l’avons vu précédemment ce coût est important. Cette opération de création de réplique sera utilisée par les métaob- jets de tolérance aux fautes lors du recouvrement. Le tableau 33 résume les résultats obtenus avec les deux types de fabrique de métaobjets.

Dans ces résultats, il apparaît clairement, encore une fois, que la création d’un pro- cessus indépendant par la fabrique d’objet est coûteux. Le temps de cette création est d’environ une seconde. En effet, lorsque l’on utilise la première fabrique de métaobjet, un seul processus indépendant est créé, celui de l’objet. En revanche avec la deuxième version, deux processus sont créés, le premier pour l’objet et le second pour le métaobjet.

Les temps donnés ici (et en V.2.1) pour la fabrique 2 dépendent donc en grande par- tie du temps de création d’une entité d’exécution sur le système sous-jacent. Le pro- tocole à métaobjet est, dans ce cas, relativement indépendant des résultats obtenus.

Type d’objet créé Temps moyen de création

Objet non-réifié 4 ms.

Objet réifié (fabrique 1) 11 ms. Objet réifié (fabrique 2) 999 ms.

Tableau 32 - Performances de la création d’objets

Type de fabrique de métaobjet

Temps moyen de création d’une nouvelle réplique

Fabrique 1 0,97 s

Fabrique 2 2 s

V.2.1.3 Des fabriques de métaobjets

Dans les deux paragraphes précédents, il apparaît clairement que le choix du type de fabrique de métaobjet influe grandement sur les performances de création des objets, que ces objets soient de simples serveurs ou qu’ils soient répliqués. L’acti- vité de création d’objet est utilisée à l’initialisation du système ainsi qu’en cas de recouvrement.

Le deuxième type de fabrique de métaobjet, qui crée chacun des métaobjets dans un processus indépendant, est nécessaire lorsque les hypothèses de fautes et les modes de défaillance du système considérés impliquent le confinement des erreurs dans chacune des entités. En effet, le système d’exploitation, ici Unix, n’assure le confi- nement d’erreur qu’entre les différents processus. En revanche, si la plate-forme (système ou ORB) proposait une granularité plus fine, en termes d’objets par exem- ple, la création de processus indépendants serait alors inutile et la création des objets en serait alors plus performante.

Si l’hypothèse de silence sur défaillance par arrêt de la machine est considérée, le confinement d’erreur intra-site n’est pas nécessaire et on peut se contenter d’utiliser le premier type de fabrique de métaobjets, qui est bien plus performant. En effet, cette hypothèse permet d’assurer un confinement inter-site des erreurs, suffisant pour tolérer ce type de fautes.

En revanche, si le confinement d’erreur intra-site est nécessaire, la deuxième fabri- que doit alors être utilisée. On pourra néanmoins rendre le processus de recouvre- ment moins handicapant en utilisant des mécanismes de tolérance aux fautes qui autorisent le clonage en parallèle avec l’exécution du système en mode dégradé. De tels algorithmes ont été développés pour des systèmes de transport hautement criti- ques en termes de vies humaines [Essame 1998].