• Aucun résultat trouvé

Après avoir vérifier que l’une des techniques de migration est faisable et ordonnançable, il reste encore quelques paramètres importants qui peuvent être déterminés en ligne.

4.6.1 Caractéristiques des travaux systèmes

Une fonction possible de la politique en-ligne est de distribuer la mémoire à transférer (cor- respondant à une charge CPU et réseau) de manière équitable entre chaque travail système. En effet, nous avons fait l’hypothèse jusque là que les espaces mémoires des travaux étaient identiques i.e. P

jm∈Tms(jm) = |T.E| ∗ s(jm) = s(Tm). Si les espaces mémoires des travaux de

la tâche migrante ne sont pas de même taille, il serait intéressant de diviser les données trans- férées proportionnellement au nombre de travaux système disponibles. Ceci permettrait dans le meilleur des cas un bon équilibre de la charge réseau et CPU induite par la migration de la tâche. Une méthode simplement applicable est envisageable telle que le premier travail transfère tout l’espace déjà exécuté, les suivants se contentent de transférer uniquement le dernier tra- vail exécuté. Pour tout tM R l’instant de la demande de migration, la procédure suivante doit déterminer :

1. le nombre de travaux nécessaires Nσ;

2. pour chacun, leur date de début au plus tôt jσ.s, leur temps d’exécution jσ.e et leur

échéance jσ.d.

Détermination du nombre de travaux systèmes

Pour la Prefetch Postcopie et la Copie Mixte, le nombre de travaux ne varie pas, il est de

= Nj = |Tm.E|. Pour la Copie Directe, il y a un seul travail système (Nσ = 1). Contraire-

ment aux autres techniques de migrations, la Prefetch Précopie utilise un nombre variable de travaux systèmes pour transférer les données sur le réseau. Il est nécessaire de configurer ce nombre en-ligne, dès que la demande de migration est connue car ce nombre dépend de la date de requête de migration.

Concernant la Prefetch Précopie, deux cas se présentent : soit k la période de la tâche mi- gration où apparaît la demande de migration k = btM R

Tm.pcmod Nj,

Cas 1 (D < Tm.p) : si le délai de migration est inférieur à la période de la tâche migrante et jmk

termine son exécution alors on considère qu’un seul travail système est nécessaire |Tσ.E| = 1 tel

que jσ.e = s(Tbpm) et jσ.d = Tm.p − tM R− δ

Cas 2 : Tσ = {{jσ1, jσ2, ..., jσl}, jσNσ}, {jσ1, jσ2, ..., jσl} est l’ensemble des travaux précopiant les don-

nées, jNσ

σ est le travail pour le dernier transfert avant reprise de la tâche migrée sur le nœud de

destination. Une façon simple de caractériser le nombre de travaux est selon l’endroit dans le cycle de la tâche migrante où la demande de migration se produit : |Tσ.E| = Nσ = dTmD.pe, Nσ ∈ [2, Nj].

Un nombre (Nσ− 1) travaux servent à précopier et un dernier travail est utilisé pour le trans-

fert juste avant l’échéance de migration. Chaque travail système jσ commence son exécution au mieux à la fin du travail lui étant attribué.

Répartition des données transférées

On dispose de l’échéance de migration, par conséquent du délai de migration D, des ca- ractéristiques de la tâche à migrer Tm (Tm.p, Tm.d, Tm.E) et de la taille mémoire des travaux

∀j ∈ Tm, s(j). Nous présentons deux algorithmes qui pourraient être exécutés pour la Prefetch

Précopie à l’instant où la demande de migration est connue.

La façon la plus simple est d’affecter un premier travail système pour le transfert de tous les travaux déjà exécutés et aux autres travaux système un travail en cours de la tâche migrante. Soit jσi le ième travaux système de Tσ, (jσi.s, jσi.e, jσi.d) respectivement sa date de début et son

temps d’exécution, et soit j.f la date de fin d’exécution d’un travail j : Algorithme Entrées : {D, tM R, Tm}, Sortie : Tσ

1 k←btM R Tm.pc mod Nj 2 ←dTmD.pe 3 j1 σ.s← min(tM R, jmk.f ) 4 j1 σ.e← P i∈[1,k] s(jim) bp 5 j1 σ.d←tM R+ D − δ 6 pour i de 2 à Nσ faire 7 ji σ.s←jk+i−1m .f 8 ji σ.e← s(jmk+i−1) bp 9 ji σ.d←tM R+ D − δ 10 fin pour

L’algorithme ci-dessus ne permet donc pas de répartir équitablement les transferts, le pre- mier travail système transférant potentiellement plus de données : il démarre dès la fin du travail courant et transfère tous les travaux déjà exécutés. Puis les autres travaux systèmes transfèrent au fil de l’exécution des travaux de la tâche migrante.

Pour répartir plus équitablement la charge sur les différents travaux système, on propose d’affecter en moyenne un temps d’exécution égal à s(Tm)

Nσ∗bp sachant que chacun des jσ ne peut

transférer que des données correspondant à des travaux déjà exécutés. Soit k la période surlaque- lle apparaît la demande de migration, Nσ le nombre de travaux système nécessaires, k + Nσ− 1

correspond à l’indice du dernier travail de la tâche migrante avant l’échéance de migration. Donc on propose d’affecter au plus un temps d’exécution égal à s(Tm)−s(jk+Nσ −1m )

(Nσ−1)∗bp aux Nσ− 1 premiers

travaux systèmes.

Algorithme Entrées : {D, tM R, Tm} Sortie : Tσ

1 S←{s(j1 m), s(jm2), ..., s(j Nj m )} 2 k←btM R Tm.pc mod Nj 3 ←dTD m.pe 4 {j1 σ.e, ..., jσNσ.e}←{0, ..., 0} 5 l←0 6 q←s(Tm)−s(jmk+Nσ −1) (Nσ−1)∗bp

.Caractéristiques des Nσ− 1 travaux systèmes (si Nσ> 1)

7 pour i de 1 à Nσ− 1 faire

tant que jσi.e < q et l ≤ k + i − 1 et Nσ> 1 faire

ji σ.e += min( s(jml) bp , q − j i σ.e) 8 S[l] -= min(s(jlm) bp , q − j i σ.e) 9 jσi.s←jml .f 10 si S[l] = 0 alors faire l++

Évaluation de performance des techniques de migrations 73

11 fin si

12 fin tant que

13 ji

σ.d←tM R+ D − δ

14 fin pour

.Caractéristiques du dernier travail système

15 jNσ σ .s←j k+Nσ−1.f 16 si Nσ> 1 alors faire jNσ σ .e←s(jmk+Nσ−1) fin si 17 sinon jNσ σ .e← P i∈[1,Nj] s(jim) bp fin si 18 jNσ σ .d←tM R+ D − δ

Dans cet algorithme, S est un tableau contenant la taille mémoire de chacun des travaux de la tâche migrante. On définit une quantité de données q que chaque travail système ne doit pas dépasser, elle correspond à la moyenne des tailles des Nj− 1 premiers travaux. Pour chaque

travail, on associe un temps d’exécution au plus égal à cette quantité. Pour chaque travail à transférer et associé à un travail système, la case correspondante dans le tableau S devient nulle et l, correspondant à l’avancement des travaux transférés, augmente d’une unité. Le dernier travail système jNσ

σ transfère toujours les données correspondant à l’espace mémoire du dernier

travail jNj

m avant l’échéance de migration sauf s’il n’y a qu’un seul travail système : dans ce cas,

on transfère l’intégralité de l’espace mémoire de la tâche migrante.

Une autre fonction de la politique en-ligne peut être de choisir une technique parmi plusieurs démontrées comme étant faisables. De même, si une technique n’est pas faisable, elle pourrait être choisie en-ligne si le scénario permet de garantir les échéances : par exemple si la Copie Directe n’est pas faisable pour la durée minimale d’inactivité Dmin, il est possible de rencontrer un cas où la durée d’inactivité est supérieure et suffisante pour l’emploi de cette technique.