Page professionnelle – Thomas Robert

Maître de Conférence

TP analyse quantitative II

I Modèle modulaire d’une architecture répliquée

commande à saisir pour pouvoir lancer directement xprism :

export PATH=/cal/homes/trobert/tool/prism-4.3-linux64/bin/:$PATH

Dans ce tp nous allons reprendre un modèle similaire à celui du tp précédant. Le modèle décrit un calculateur pour lequel le calculateur a trois fonctionnements possibles:

  • le cas normal : état 1;
  • le cas défaillance en valeur : état 0; Attention le sens des valeurs a changé peut être !
  • le cas défaillance par crash : état -1;

dtmc
const double def_V = 0.1; // probabilité d’une défaillance en valeur
const double def_C = 0.15; // probabilité d’une défaillance par crash.

module myreplica1
x : [-1..1] init 1; //cf sens défini ci dessus
[](x=1) -> def_V: (x’=0) +def_C:(x’=-1) +1-(def_C+def_V):(x’=x);
[](x=0) -> def_C:(x’=-1) +def_V:(x’=x) + 1-(def_V +def_C):(x’=1);
[](x=-1)-> 1:(x’=x);
endmodule

 

Question 1 En supposant que chaque transition franchie correspond à une requête émise au calculateur : tracer l’évolution de  la probabilité d’être dans l’état 1 depuis l’instant 0 jusqu’à la date t, puis la probabilité d’être dans l’état -1 à l’instant t  ?

 

remarque : le but ici est de calculer la probabilité à la date t d’être resté dans l’état 1 (fiabilité), ou d’être dans l’état 1 à la date 1. Ce ne sont donc pas les mêmes formules qui faudra utiliser pour tracer ces probabilités.

Nous allons maintenant évaluer la probabilité de produire une résultat correct pour une architecture de réplication active à 3 répliques. Pour cela, nous allons étendre le modèle PRISM.

Il est possible

1 de créer une copie d’une chaine de markov, puis de remplacer les noms des variables d’état par substitution de texte. (explications ici)

2 d’analyser un « réseau de modules », le système réalise le produit synchronisé des automates correspondants. Si les transitions ne sont pas nommées : elles sont indépendantes (une « exécution » devient un entrelacement de transitions

Consigne  :

  • Ajoutez après « endmodule » :
    module myreplica2= myreplica1[x=y] endmodule
    module myreplica3= myreplica1[x=z] endmodule
  • Synchronisez les transitions de toutes les répliques de telles sorte que chaque fois qu’une réplique franchit une transition, chaque réplique franchit exactement une transition (tout le monde « avance » d’une exécution, aide : utilisez une transition synchronisée).
  • évaluez la probabilité que 2 répliques parmi trois soient fonctionnelles au bout d’un « run », puis au bout de 10 exécutions ?
    (vous pouvez le faire en calculant la somme des probabilité des états transitoires où 2 états sont fonctionnels, ou en écrivant une formule logique). ( commençant par exemple par  » P=?[G<=1 « ).

Question 2 : Calculez la fiabilité de cette architecture à la date 1 (après une exécution). Comparez la à celle d’une réplique.

Question 3 : Tracez l’évolution de la fiabilité en fonction du nombre d’exécutions consécutives.

Modifiez le modèle de sorte que la défaillance par crash ne se produise jamais. Conservez les mêmes probabilité de défaillance en valeur et adaptez les autres transitions.

Question 4 : Tracer l’évolution au cours du temps de la fiabilité et de la disponibilité de cette architecture. (Y a t il une différence entre les deux concepts ?), on suppose le voteur élémentaire si le nombre de réponses identiques est de 2 au moins, un résultat est produit (les défaillances en valeur sont à considérer comme malicieuses par exemple).

 

II Chaîne Continue et temps moyen avant défaillance (MTTF).

Question 1 Modéliser le comportement d’un calculateur dont la date de défaillance suit une loi exponentielle dont le paramètre est appelé taux de défaillance et vaut 0.0001.  On supposera que le calculateur n’a que deux états de fonctionnement (fonctionnel : 1; défaillant : 0). Vérifiez votre modèle en calculant  la probabilité que l’état soit 1 aux dates 6931 et 6932 (vous devriez voir que la probabilité passe en dessous de 0.5 entre ces deux points). 

Notez : pour les chaînes continues, on ne définit pas les « self-transitions » i.e. les boucles. De plus la somme des taux est libre (elle n’a pas d’obligation à faire 1. La moyenne d’une loi exponentielle est l’inverse de son taux).

Indication : utilisez ctmc au lieu de dtmc (pour le reste la syntaxe est très similaire). Le taux de transition dans un modèle ctmc vient remplacer la probabilité d’une transition.

Par rapport à une variable continue, il faut distinguer la médiane, de la valeur moyenne. L’outil peut aider à la rigueur à trouver la première, mais la seconde doit être calculée.

Il est possible de sauvegarder les données d’une expérience PRISM sous différents formats. Nous allons sauvegarder les résultats d’une expérience permettant de calculer le temps moyen avant défaillance pour cette architecture.

Question 2 Utilisez une expérience permettant d’avoir, pour chaque instant jusqu’à 100000, la probabilité d’être dans l’état défaillant. Pour cela, vous pourrez engendrer la courbe correspondant à P=?[F[T,T] Phi] avec Phi la formule indiquant l’état de défaillant de votre réplique. Puis, utilisez un tableur ou le script R fourni ci-dessous pour calculer la date moyenne de la transition de l’état fonctionnel vers celui de défaillance.

#!/usr/bin/Rscript
args<-commandArgs(TRUE)
table <- read.csv(file=args[1], head=FALSE,skip=1,sep=",")
u<-table$V1
v<-table$V2
r<-diff(v)*u[-1]
print(sum(r))

Vérifiez que vous retombez bien sur le résultat théorique le MTTF d’un système suivant une loi exponentielle de paramètre L vaut 1/L. (attention tout ceci est sans unité).

Question 3 Modifiez ce modèle pour y inclure une transition modélisant une réparation prenant en moyenne 24h. (On supposera que le taux de 0.0001 correspond à un taux calculé pour des temps moyens exprimés en heures). Tracez l’évolution de la fiabilité et de la disponibilité du système au cours du temps en supposant que le système est fiable à la date t et le reste pendant au moins 2h, et il est disponible si il est dans l’état 1 à la date souhaitée….

Question 4 En supposant que ce modèle est utilisé comme brique de base dans une architecture répliquée de type réplication active à 3 répliques, définissez un réseau d’automate pour évaluer la fiabilité (sous l’hypothèse d’un voteur totalement fiable et disponible).

Question 5 Modifiez le modèle pour inclure un mode de défaillance par crash permanent (-1), avec un taux de défaillance de 0.000001. Dans ce cas le système devient indisponible si il n’y a pas au moins deux calculateurs dans un état identique différent du crash (soit 2 en défaillance 0– modèle byzantin de défaillance en valeur, soit 2 fonctionnels à 1) ? (Réévaluez la disponibilité du système comparez la au cas d’une seule réplique). 

Question 6 Combien  de calculateurs supplémentaires (non impliqués dans le vote mais en fonctionnement) faut il ajouter au minimum pour que la disponibilité de la réplication active soit supérieure à celle d’une unique réplique sur un intervalle de 24* 365 heures (1 an ) ?