• Aucun résultat trouvé

Algorithmes de migration de processus

CHAPITRE 2 MIGRATION DE PROCESSUS

2.3 Migration de processus dans des machines homogènes

2.3.1 Algorithmes de migration de processus

Il existe huit algorithmes de base pour la migration de processus dans des machines homogènes [Noack, 2003]:

 L’algorithme de copie totale (Total Copy Algorithm);  L’algorithme de pré-copie (Pre-Copy Algorithm);

 L’algorithme de page à la demande (Demand Page Algorithm);

 L’algorithme de serveur de fichiers (File Server Algorithm ou Flushing Algorithm);  L’algorithme de gel libre (Freeze Free Algorithm);

 L’algorithme de pré-copie de file en attente (Queued Pre-Copy algorithm);  L’algorithme de post-copie (Post-Copy algorithm);

 L’algorithme de post-copie assistée (Assisted Post-Copy algorithm).

L'algorithme doit aussi établir un ordre de transfert de différents composants de l'état de processus et essayer de réduire au minimum le nombre total de messages. Les différents composants de l'état de processus qui doivent être cueillis et transmis sont:

 L’information de contrôle de processus: la priorité, l'état, le numéro de processus, le numéro de parent de processus;

 L’état d'exécution: l’état de processeur, le pointeur de pile, le compteur ordinal, les registres d’état;

 L’espace d'adressage: la mémoire virtuelle entière du processus;  Le lien de contrôle d'information et les messages de mémoire tampon;

 L’information de fichier: les descripteurs de fichier et les blocs de fichier mis en antémémoire.

Il existe plusieurs métriques importantes pour évaluer le temps de migration de processus. La figure 2.6 donne un modèle simplifié de ce temps qui est composé [Noack, 2003]:

 Le temps de migration initiale décrit le temps passé depuis la demande de la migration jusqu'à ce que le processus commence son exécution sur le nœud de destination.

 Le temps de migration totale est le temps passé depuis la demande de la migration jusqu'à la fin du transfert complet du processus. Les algorithmes de migration de processus avec des dépendances résiduelles n'ont pas de temps de migration totale. En effet, certaines parties de l'information de processus résident toujours à l'ancien nœud donc la migration ne finit jamais complètement.

 Le temps mort se réfère à la période où le processus de migration est suspendu. Pendant ce temps, l'état de processus est transféré au nœud destination selon l'algorithme de migration employé. Le temps mort est particulièrement critique pour les processus qui communiquent avec d'autres processus parce qu'ils ne peuvent pas recevoir des messages pendant ce temps.

 Le temps de préparation fait référence au transfert de plusieurs parties de l'information de processus, habituellement l'espace d'adressage avant la migration réelle.

 Le temps post-traitement est la période après la reprise d’exécution de processus dans le nœud destination pour éliminer, par exemple, les dépendances résiduelles de l'hôte source en expédiant toutes les données restantes du processus au nœud de destination. Les dépendances résiduelles arrivent quand l'information de processus reste à l'hôte source après la migration. Ainsi, le processus migré dépend toujours de son ancien nœud. Si l'hôte source ou la connexion de réseau tombe en panne, l'exécution du processus échouera à cause de l'information manquante.

début de migration temps mort temps de préparation temps de post-traitement arrêt de processus sur le nœud source reprise d exécution sur le nœud destination migration complétée

temps de migration initial temps de migration total temps

processus

Figure 2.6 Périodes de migration de processus

Algorithme de copie totale

L’algorithme de copie totale est le premier et reste le plus largement utilisé pour la migration de processus. Il est utilisé dans les systèmes tels que Locus [Smith, 1995], Amoeba [Steketee et al., 1996] et Charlotte [Finkel et Artsy, 1989]. Le but de cet algorithme consiste à suspendre le processus, à transférer toute l'information d'état et ensuite à reprendre son exécution sur le nœud destination. D’une manière générale, l'algorithme de copie totale de migration de processus suit les étapes suivantes:

 Suspendre le processus de l’hôte source;

 L’hôte source envoie une requête d'approbation de migration à l’hôte destination;  L’hôte destination répond par un message d’acceptation ou de rejet;

 Si la migration est acceptée, l’hôte source:

o transfère le contrôle de processus et l'état d'exécution;

o envoie les liens de communication et les messages de mémoire tampon;

o transfère les descripteurs de fichier et les blocs de mémoire cache de fichiers modifiés;

o envoie les pages de code, le tas et la pile;

o demande à l’hôte destinataire de reprendre l’exécution de processus; o supprime le processus.

L'algorithme de copie totale a un défaut principal: le temps mort est long puisque le transfert du processus complet se fait seulement à cette période (voir la figure 2.7). Tout message qui est envoyé au processus durant ce temps de transfert est bloqué. Ceci augmente radicalement

l'apparence d'échecs de communication parce que le processus ne peut pas recevoir des messages pendant ce temps. L'avantage de cet algorithme est sa simplicité. Il élimine les dépendances résiduelles en expédiant toute l'information à l’hôte destinataire et peut ainsi supporter la tolérance aux pannes de processeur. La figure 2.8 présente l'algorithme de copie totale de migration de processus.

arrêt de processus et début de migration temps mort information de processus temps nœud source nœud destination migration complétée et reprise d exécution

Figure 2.7 Période de transfert de l’algorithme de copie totale (voir la définition à la page 28)

reprendre l’exécution de processus descripteurs de fichier

pages de code liens de communication

nœud destination nœud source

requête d'approbation de migration réponse d’acceptation de migration contrôle de processus et état d'exécution

pages de pile pages de tas

Algorithme de pré-copie

L'algorithme de pré-copie a été inventé par Theimer [Theimer et al., 1985] pour le système V. Cette technique optimise le transfert de l'espace d'adresse virtuelle en permettant que le processus continue son exécution sur son nœud source pendant sa migration. Une fois le transfert accepté, le nœud source envoie les pages de code, de tas et de la pile au nœud destination. Si le nombre total de pages modifiées envoyées est plus grand qu'une limite prédéterminée, le processus continue son exécution et les pages nouvellement modifiées sont retransmises. Sinon, le processus est suspendu et toute l’information d'état est transférée.

L’algorithme de pré-copie réduit le temps de migration en limitant le nombre de pages de l'espace d'adresse virtuelle transmis pendant la suspension du processus. Cependant, le coût total augmente si les pages continuent à être modifiées pendant que le processus s’exécute sur le nœud source d’où le besoin de les retransmettre. Ceci peut prendre plusieurs envois jusqu'à ce que le nombre de pages modifiées soit inférieur à la limite prédéterminée. La figure 2.9 présente les périodes de migration de processus de l’algorithme de pré-copie.

début de migration état de processus et pages temps nœud source nœud destination pages temps mort temps de préparation arrêt de processus migration complétée et reprise d’exécution

Figure 2.9 Périodes de transfert de l’algorithme de pré-copie (voir la définition à la page 28)

Un des inconvénients de cet algorithme est qu’il peut envoyer les mêmes pages plusieurs fois, ce qui augmente le nombre total de messages à transférer. Le fait qu’un processus peut

changer d’état pendant que son espace d’adressage est transféré demeure aussi un inconvénient. Un processus peut terminer de s’exécuter, par exemple. La figure 2.10 présente l’algorithme de pré-copie.

reprendre l’exécution de processus descripteurs de fichier

pages de code

liens de communication

nœud destination nœud source

requête d'approbation de migration réponse d’acceptation de migration

contrôle de processus et état d'exécution pages de pile

pages de tas pages de pile modifiées

pages de tas modifiées

pages de tas modifiées pages de pile modifiées

Figure 2.10 Algorithme de pré-copie

Algorithme de page à la demande

Zayas [Zayas, 1987a] a mis en œuvre l’algorithme de migration de processus de page à la demande. La figure 2.11 présente l’algorithme de page à la demande. Celui-ci utilise le mécanisme des pages sur référence où seules les pages référencées par le processus sont transférées. Il est semblable à l'algorithme de copie totale à la seule différence qu'aucune page

de mémoire virtuelle n'est transférée pendant la migration. En effet, seul l’état de processus et les descripteurs de fichiers sont transférés.

Figure 2.11 Algorithme de page à la demande

Une fois que le processus est redémarré dans le nœud destination, il envoie une requête de pages de code, de pile et de tas respectivement à l’hôte source. Les défauts de pages futurs

reprendre l’exécution de processus descripteurs de fichier

nœud destination nœud source

réponse d’acceptation de migration

contrôle de processus et état d'exécution

liens de communication

page de code

page de pile

page de tas

requête d’approbation de migration

requête page de code

requête page de pile

sont chargés au besoin. Cette méthode réduit le transfert de données de mémoire virtuelle et les pages sont envoyées au besoin. Il en résulte un gel de message plus court, une réduction du temps de migration de processus et une élimination du transfert de pages inutiles. L'inconvénient de cette méthode est que l’hôte source doit maintenir l'espace d'adresse virtuelle jusqu'à ce que le processus termine son exécution. En laissant l'espace d'adressage sur le nœud source, une dépendance résiduelle s’établit et ceci affecte la tolérance aux pannes du système. Ainsi, l'algorithme de page à la demande réduit le temps de transfert de processus mais entraîne un problème résiduel qui l'empêche d'être tolérant aux pannes. Comme le montre la figure 2.12, l’algorithme de page à la demande utilise les périodes de temps mort et de post-traitement pour la migration de processus.

Figure 2.12 Périodes de transfert de l’algorithme de page à la demande

Algorithme de serveur de fichiers

L’algorithme de serveur de fichiers est très semblable à celui de page à la demande mais ajoute une troisième machine [Douglis, 1989] [Ousterhout et al., 1988]. Après la réception de la permission de migration de processus, le nœud source envoie l'état d’exécution,

temps de post-traitement arrêt de processus et début de migration temps mort état de processus temps nœud source nœud destination reprise d’exécution pages demandées

l'information de lien de communication, les descripteurs de fichier et l'espace d'adressage. L’hôte source demande alors au destinataire de commencer à exécuter le processus. Ainsi au lieu de maintenir l'espace d'adressage au nœud source comme dans l'algorithme de page à la demande, il transfère simultanément les pages modifiées et les blocs de mémoire cache de fichier au serveur de fichiers. Selon les techniques précédemment utilisées, le nœud source devrait satisfaire les requêtes de page, mais avec cet algorithme, le serveur de fichiers manipulera les fautes de page produites par le processus migré une fois l'espace d'adressage transféré. La figure 2.13 présente les périodes de transfert de l’algorithme de serveur de fichiers.

Figure 2.13 Périodes de transfert de l’algorithme de serveur de fichiers

Dans les algorithmes précédemment décrits, seules les machines source et destination ont été impliquées à la migration de processus. En ajoutant un serveur de fichiers, la migration de

temps de post-traitement arrêt de processus et début de migration temps mort état de processus temps nœud source nœud destination reprise d’exécution pages demandées serveur de fichier

processus peut utiliser la technique de page à la demande sans avoir une dépendance résiduelle à l’hôte source. La figure 2.14 l’algorithme de serveur de fichiers.

Figure 2.14 Algorithme de serveur de fichiers

reprendre l’exécution de processus

nœud destination nœud source

requête d'approbation de migration

réponse d’acceptation de migration

contrôle de processus et état d'exécution

requête de page de code

page de code

requête de page de pile

page de pile

requête de page de tas

page de tas serveur de fichier

descripteurs de fichier

pages de pile modifiées

pages de tas modifiées

pages de mémoire cache modifiées

Algorithme de gel libre

L’algorithme de gel libre a été proposé par Roush dans sa thèse de doctorat [Roush, 1995]. La motivation principale de cet algorithme est de réduire le temps de migration de processus qui, en moyenne, est de 50 millisecondes (ms) dans les algorithmes précédents. Cet algorithme peut migrer un processus en 14 ms. La réalisation de ce meilleur rendement sur les algorithmes de migration de processus précédents s’est faite en respectant les exigences suivantes. Premièrement, cet algorithme élimine la requête d'approbation en supposant que le nœud destination accepte la migration de processus et envoie le compteur ordinal et l'état d'exécution. Ceci fait économiser le temps de message va-et-vient qui est coûteux. Bien sûr, l'algorithme doit toujours redémarrer le processus de transfert si le nœud source rejette la migration. La figure 2.15 présente l’algorithme de gel libre.

L’algorithme de gel libre est destiné à un système distribué utilisant la communication de message. Il est supporté par un serveur de fichiers. Les principales étapes de l’algorithme sont:

 L’hôte source suspend le processus de migration;

 L’hôte source rassemble l'état d'exécution et le contrôle de processus et le transmet au destinataire;

 Le destinataire répond par un message d’acceptation ou de rejet;

 Simultanément après la transmission initiale, l’hôte source détermine la page de code, de pile et de tas puis les transmet;

 L’hôte destination reprend l’exécution de processus dès qu’il reçoit le premier page de code, de pile et de tas (facultative);

 Simultanément, l’hôte source transfère les restes de pages de pile, les liens de communication et les descripteurs de fichier à l’hôte destination;

 L’hôte source envoie simultanément les pages de tas et de mémoire cache modifiées au serveur de fichiers;

 L’hôte source envoie à l’hôte destination un flux de message complet indiquant que les pages sont disponibles au serveur de fichiers.

flux de message complet

nœud destination nœud source

réponse d’acceptation de migration contrôle de processus et état d'exécution

page de code

page de pile page de tas serveur de fichier

descripteurs de fichier

pages de tas modifiées

pages de mémoire cache modifiées

liens de communcation page de pile restante

Figure 2.15 Algorithme de gel libre

La latence de migration de processus pour l'algorithme est le temps de la suspension de processus jusqu'à ce que l’hôte destination reçoive la première page de pile. Ce temps est constant indépendamment de la taille de l'espace d'adressage, du nombre de fichiers ouverts et du nombre de pages modifiées. Les messages vers le processus migrant sont traités par l’hôte source jusqu'à ce que la liaison soit transférée à l’hôte destination.

Algorithme de pré-copie de file en attente

L'algorithme de pré-copie de file en attente est une version légèrement améliorée de la technique de pré-copie. Il réduit le nombre de transferts de page multiples en assurant que les

pages souvent utilisées sont transférées moins souvent que possible. Une brève description des étapes effectuées pendant le temps de préparation est la suivante:

1. Un espace W contient toutes les pages d'un processus alors que le processus continue son exécution;

2. Chaque page de W est retirée de l’espace W, marquée en lecture seulement dans la table des pages, et elle est mise en attente dans une file R;

3. Les étapes précédentes sont reprises pendant un certain intervalle de temps jusqu'à ce que la migration soit terminée;

4. Si le processus lève un défaut de page en raison d'un accès en écriture à une page marquée en lecture seulement, la page est retirée de R et il est insérée dans W et marquée en écriture;

5. Un processus d’arrière-plan retire continuellement la première page de R de la file d'attente et la transfère à l'hôte de destination;

6. Si R est vide, la taille de W peut être mesurée. Si la taille est inférieure à une limite fixée, le processus de migration est interrompu et toutes les pages de W sont mises dans la file d'attente de R et elles sont transférées.

Cet algorithme a été décrit dans Nomadic Operating System [Henriksen et Hansen, 2002] pour la première fois. Il a été implémenté dans Smile [Noack, 2003] sur Linux.

Algorithme de post-copie

L'algorithme de post-copie [Richmond, 1996] ressemble beaucoup aux algorithmes précédemment décrits. Initialement, cet algorithme transfère l'état de processus. Il évite les dépendances résiduelles en transférant l'information de processus restante dès que le processus reprend son exécution à l'hôte de destination. La migration de processus suit les étapes suivantes:

1. La suspension du processus de l'hôte source;

2. Le transfert de l’état de processus vers le nœud destination; 3. La reprise de l'exécution du processus migré;

4. Le transfert de toute l'information de processus restante tant que le processus continue son exécution sur l'hôte destination;

5. Le transfert des pages restantes du processus s’exécutant sur le nœud source.

Pendant l'exécution du processus dans l'hôte de destination, le transfert de pages doit être transparent. Comme l’algorithme de page à la demande, le processus peut faire référence aux pages de son espace d'adressage qui résident toujours sur l'hôte source. Pour pallier au problème de dépendances résiduelles, une requête prioritaire est envoyée à l'hôte source. Puis, la page demandée est envoyée immédiatement. Cependant, la requête prend un laps temps et l'exécution de processus est suspendue pendant cette période. Il prend moins de temps pour résoudre une faute de page localement que via un réseau. Les dépendances résiduelles existent seulement pendant la période de post-traitement où les pages restantes sont transférées de l'hôte source. Cet algorithme est implémenté dans Smile [Noack, 2003]. La figure 2.16 présente les périodes de transfert de l’algorithme de post-copie.

temps de post-traitement arrêt de processus et début de migration temps mort état de processus temps nœud source nœud destination reprise d’exécution pages migration complétée pages demandées

Algorithme de post-copie assistée

La plupart des algorithmes précédemment décrits utilisent deux périodes pour la migration de processus. L’algorithme de post-copie assistée a été inventé pour utiliser toutes les trois périodes de migration de processus dans Smile [Noack, 2003].

L’algorithme de post-copie assistée est essentiellement une synthèse de pré-copie et de post- copie. C’est la première fois qu’un algorithme de migration de processus utilise toutes les trois périodes pour la migration de processus (voir la figure 2.17). Brièvement, cet algorithme exécute les étapes suivantes:

1. Le transfert de l'espace d'adressage entier pendant que le processus continue à s’exécuter sur l'hôte source;

2. Le stockage temporairement des pages reçues par l'hôte de destination; 3. La suspension du processus;

4. Le transfert de l’état de processus;

5. La reprise de l’exécution de processus au nœud destination; 6. Le transfert de toutes les pages modifiées du nœud source;

7. L’envoi immédiat des pages demandées par le processus en exécution;

8. Le stockage de toutes les pages non modifiées dans un espace d'adressage temporaire de l'hôte de destination.

Comme l’algorithme de pré-copie, l'espace d'adressage entier du processus d'exécution est initialement transféré pendant le temps de préparation. Les pages sont stockées dans un espace d'adressage temporaire de l'hôte de destination au lieu d'être insérées dans l'espace d'adressage du nouveau processus. Après le transfert initial, l'hôte source suspend le processus de migration et expédie l'état de processus. Le processus migré reprend son exécution immédiatement.

Quand le processus reprend son exécution au nœud destination, il commence à faire référence aux pages. Immédiatement une faute de page est générée en raison de l'espace d'adressage vide. Le fait de résoudre la faute de page en se référant aux pages stockées dans l'espace

d'adressage temporaire à l'hôte de destination peut provoquer l'incohérence parce qu’elle pourrait être modifiée pendant le temps de préparation à l'hôte source. Une requête est