• Aucun résultat trouvé

4.3 Analyse du contexte et hypothèses . . . . 59 4.4 Techniques de migration temps-réel strictes . . . . 61 4.5 Analyses hors-ligne . . . . 65 4.6 Politique de choix en-ligne . . . . 71 4.7 Évaluation de performance des techniques de migrations . . . . 73 4.8 Conclusion . . . . 78

Nous avons vu dans le chapitre précédent une approche de reconfiguration apportant une flexibilité opérationnelle dans un système embarqué temps-réel critique pour améliorer sa tolérance aux fautes. Dans cette approche, nous avons notamment proposé une méthode minimisant la mi- gration et la réplication des tâches critiques afin de reconfigurer vers une allocation de référence suite à des défaillances matérielles.

Dans le domaine des systèmes distribués asynchrones, un grand nombre de mécanismes de migration de tâches ont été proposés. Toutefois, aucun travail similaire n’existe lorsque ces sys- tèmes sont soumis à des contraintes temps-réel strictes. Nous présentons quatre techniques : la Copie Directe, la Prefetch Précopie, la Prefetch Postcopie et la Copie Mixte qui exploitent la description statique du comportement temporel des tâches. Ces techniques s’effectuent en temps borné tout en respectant les contraintes temps-réel, notamment les échéances de migration. Pour chaque mécanisme proposé, nous décrivons les conditions de faisabilité qui peuvent être vérifiées hors-ligne pour un temps de migration quelconque. Nous montrons également comment intégrer ces techniques de migrations dans des tests de faisabilité. Nous comparons les performances des techniques proposées par simulation. Nos résultats montrent que le surcoût induit par ces techniques est bas.

Ces travaux ont fait l’objet de 2 publications : un article court et un poster à RTAS’11 WiP [MJDF11b] et un article long à RTNS’11 [MJDF11a].

4.1

Problématiques

La migration de tâches a été largement étudiée dans les dernières décennies pour les systèmes distribués asynchrones [MDP+00]. La principale préoccupation de ces mécanismes est de réduire

le temps de gel d’une tâche, l’intervalle de temps durant lequel la tâche migrée ne peut pour- suivre son exécution. Permettre un tel temps de gel dans un système temps-réel strict aboutirait à un système peu prédictible et dont certaines échéances seront dépassées.

Actuellement, les systèmes temps-réel critiques tels que les systèmes automobiles ou avion- iques de type contrôle-commande sont souvent développés pour des architectures distribuées. La sûreté de fonctionnement a un rôle important : même en cas de défaillances matérielles comme l’arrêt d’un nœud et par conséquent la perte des tâches allouées sur celui-ci, les tâches critiques doivent pouvoir continuer leur exécution pour assurer la disponibilité. Lorsque des défaillances se produisent, l’une des stratégies les plus répandues est de disposer d’une capacité de réplication dynamique nécessitant la gestion d’un ensemble de répliques des tâches critiques pour tolérer au mieux la dégradation du système distribué temps-réel strict. La conception de mécanismes de migration appropriés pour un système temps-réel strict avec des propriétés de prédictabilité est alors nécessaire. L’un des prérequis pour la conception de tels mécanismes de migration est de s’assurer que l’ensemble du système reste ordonnançable pendant la migration de tâches, en complément des démonstrations d’ordonnançabilité classiques utilisées avant et après que le pro- cessus de migration soit effectué [EB07]. Est-il possible d’appliquer ces migrations sans manquer d’échéance, en temps borné et sans aucun temps de gel ?

Dans ce travail, nous montrons comment construire des mécanismes de migration adaptés au contexte de systèmes distribués temps-réel stricts. De tels systèmes nécessitent une description statique et logique de leur comportement temporel, i.e. les contraintes temps-réel associées à chaque tâche ainsi que leurs chemins possibles d’exécution sont connus. Aucun temps de gel n’est

donc nécessaire pour migrer des tâches temps-réel stricts, de par la connaissance des inactivités de

la tâche à migrer. Nous présentons quatre techniques de migration qui illustrent cette affirmation. De plus, cette description statique des chemins possibles d’exécution permet d’identifier les zones mémoires utiles (soit en lecture, soit en écriture, soit en exécution) pour chacun des travaux d’une tâche temps-réel stricte. Nous utilisons cette relation pour organiser efficacement les transferts de données sur le réseau, en fonction de différentes stratégies (par des politiques de Prefetch Précopie ou Postcopie) et en fonction des contraintes temporelles de chacun des travaux. Nous formalisons les différentes contraintes temporelles qui décrivent les conditions de faisabilité de la tâche à migrer pour une échéance quelconque, définie par l’utilisateur (pouvant être supérieure à la période de la tâche). Des tâches additionnelles spécifiques sont utilisées pour implémenter la politique de migration de tâches sur chacun de nœuds. Ces tâches sont intégrées à l’ensemble des tâches pour vérifier l’ordonnançabilité CPU et réseau du système. Nous discutons des résultats de faisabilité obtenus pour différentes échéances de migrations possibles en section4.5.1. Finalement, la section4.7présente une évaluation du coût induit par ces techniques en termes de préemptions supplémentaires engendrées.

Positionnement 59

4.2

Positionnement

Différentes techniques de migration ont été proposées pour les systèmes distribués asyn- chrones [MDP+00]. La Copie Directe est la plus communément utilisée car simple à implémenter. Elle consiste à geler l’exécution de la tâche qui va être migrée sur le nœud source, à transférer intégralement son espace d’adressage et à reprendre l’exécution sur le nœud cible. Cependant, cette technique induit un important temps de gel.

Plusieurs stratégies alternatives ont donc été proposées pour réduire ce surcoût. Par exemple dans la stratégie de Précopie [TLC85], la quasi totalité de l’espace d’adressage de la tâche est transférée pendant l’exécution de celle-ci sur le nœud source. L’opération de transfert est répétée pour les nouvelles pages modifiées par la tâche en cours d’exécution qui a altérée certaines d’entre elles déjà transférées. L’algorithme continue à envoyer les pages modifiées jusqu’à ce nombre de pages soit suffisamment bas. La tâche est alors gelée et les pages restantes transférées. Le temps de gel est donc réduit. D’autres techniques existent comme le Transfert à la référence, Flushing ou Freeze Free [Rou96]. Cependant, ces techniques exhibent tout de même un temps de gel. En outre, elles laissent également des dépendances résiduelles soit sur le nœud source soit sur un serveur de fichiers servant d’intermédiaire. Ces méthodes amènent donc à une augmentation du temps d’exécution des tâches migrées à la reprise de leur exécution sur le nœud cible à cause de défauts de pages, comme l’espace d’adressage n’est pas complètement disponible sur le nœud cible. Finalement, la tolérance aux fautes se trouve diminuée lors d’une défaillance de nœuds sources (ou de serveurs de fichiers) car leurs défaillances impliqueraient la défaillance des tâches migrées.

Quelques travaux existent pour les domaines du temps-réel souple ou les applications hautes performances. Constantinou et al. [CSM+05] montrent l’influence d’une migration de thread sur les performances dans une architecture multicœurs en fonction de différents paramètres comme la fréquence de migration et des modes de préchargement des caches. Briao et al. [BaBW08] la migration de tâches temps-réel souples dans les MPSoC avec quelques stratégies d’allocation et leurs résultats montrent qu’il y a un compromis réalisable entre la consommation d’énergie et le taux d’échéances manquées selon l’algorithme utilisé. Concernant les applications temps-réel multimédia, Acquaviva et al. [AAP08] ont proposé des supports pour la migration de tâche basés sur des points de reprise permettant le réplication ou la recréation de tâches. Cependant dans tous ces travaux, les protocoles de migration de tâches utilisés sont similaire à la Copie Directe et ne ciblent pas les applications temps-réel strictes, hypothèse faite dans le cadre de ces travaux de thèse.

Proche de notre travail, on trouve les protocole de changement de mode temps-réel [NGA09]. Cependant, ils se concentrent sur la définition des tests d’ordonnançabilité pour assurer des transitions correctes entre ensemble de tâches mais la migration de tâche n’est pas considérée à cause de l’ordonnanceur oisif utilisé. Récemment, l’étude de migration de lignes de caches de tâches temps-réel strictes a été réalisée pour des systèmes embarqués multicœurs [KRSM09]. C’est le travail le plus proche du notre. Les auteurs fournissent des garanties hors-ligne sur l’impact du pire temps d’exécution de tâches.