Sistema di votazione
Transcript
Sistema di votazione
Sistema di votazione Anno accademico 2005/2006 Progetto per l’esame di Sistemi di Elaborazione: Modellistica e Simulazione Docente del corso Prof. A. Bondavalli Paolo Filippelli <[email protected]>, matr. 2566393 Giacomo Sacchetti <[email protected]>, matr. 2661644 Mattia Santoro <[email protected]>, matr. 2532059 15 febbraio 2006 2 Copyright (c) 2006 Paolo Filippelli, Giacomo Sacchetti, Mattia Santoro Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being Ringraziamenti, with the Front-Cover Texts being Sistema di votazione, and no Back-Cover Texts. Il presente elaborato è stato scritto per poter sostenere l’esame di “Sistemi di Elaborazione: Modellistica e Simulazione del corso di laurea in Informatica a Firenze. . In copertina: Il testo è stato composto dagli autori mediante LATEX 2ε . Indice 1 Descrizione del progetto 1.1 Testo del progetto . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Assunzioni di base . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 5 2 Cenni sulle distribuzioni 2.1 Esponenziale . . . . . 2.2 Normale . . . . . . . . 2.3 Weibull . . . . . . . . 7 7 7 9 di probabilità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Modello del Sistema in Mobius 3.1 Descrizione Generale . . . . . . . . . 3.2 Descrizione Specifica dei Modelli . . 3.2.1 Modello Atomico delle CPU . 3.2.2 Modello Atomico del Canale 3.2.3 Modello Atomico del Voter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 11 11 12 16 4 Simulazioni 4.1 Parametri della simulazione 4.2 Reward variables . . . . . . 4.3 Rate Rewards . . . . . . . . 4.4 Impulse Rewards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 23 24 25 25 5 Risultati delle Simulazioni 5.1 Mean Time To Failure . . . . . . . . . . 5.2 Steady state . . . . . . . . . . . . . . . . 5.2.1 Caso λ variabile, X = 2, N = 3 . 5.2.2 Caso X variabile, λ = 0.1, N = 3 5.2.3 Caso N variabile, λ = 0.1, X = 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 27 36 36 36 36 . . . . . . . . 6 Computer farm . . . . . . . . . . . . 43 3 4 INDICE Capitolo 1 Descrizione del progetto 1.1 Testo del progetto Un sistema è composto da N processori ridondati e da un votatore. Ad intervalli di tempo regolari di 0.1 secondi, ciascun processore invia in maniera sincronizzata al votatore il risultato di un esperimento. Se il processore funziona correttamente, il risultato trasmesso sarà il numero 1, altrimenti verrà trasmesso un numero casuale fra 0 e 9. Il risultato, prima di giungere al votatore, attraversa un unico canale di comunicazione, condiviso da tutti i processori. Se il canale funziona correttamente, il risultato giunge invariato al votatore, altrimenti il risultato trasmesso potrà essere modificato come segue: • se il risultato in transito è compreso fra 0 e 3, con probabilità p = 0.3 viene trasformato in un numero casuale compreso fra 4 e 9; • se il risultato in transito è compreso fra 4 e 9, con probabilità p = 0.1 viene trasformato in un numero casuale compreso fra 0 e 3. Si supponga che ciascun processore fallisca secondo una Weibull di parametri (α, β) = (x, x), che il canale di comunicazione fallisca con rate esponenziale pari a λ , e che entrambi abbiano tempi di riparazione distribuiti secondo una normale di media 1 e varianza 1.5. L’intero sistema fallisce se il votatore ottiene una maggioranza di risultati uguali che, però, non sono uguali ad 1. Si costruisca un modello che rappresenti il sistema e si determini il tempo medio al fallimento del sistema e la probabilità a steady-state che il votatore fornisca un risultato scorretto nei seguenti casi: • x = 2, λ = 0.1 (fallimenti/giorno), N = 2, 3, 4, 5. • x = 2, λ = 0.01, 0.1, 1, 10 (fallimenti/giorno), N = 3. • x = 1, 2, 3, 4 , λ = 0.1 (fallimenti/giorno), N = 3. 1.2 Assunzioni di base In questa sezione si vanno a specificare alcuni aspetti del sistema che o non sono specificati o possono risultare ambigui leggendo il testo del progetto e che sono stati assunti durante la stesura del modello e le simulazioni. 5 6 CAPITOLO 1. DESCRIZIONE DEL PROGETTO Si assume che: • il canale invia tutti i messaggi istantaneamente; • il votatore decide istantaneamente; • la maggioranza calcolata dal votatore è una maggioranza proporzionale (sarebbe stato interessante simulare anche il caso maggioritario ma purtroppo non è bastato il tempo); • se il numero di risultati con valore uno è uguale al numero di risultati con valore diverso da uno il sistema NON fallisce (es. se con N = 5 si hanno i risultati: 1, 2, 2, 1, 9 allora il sistema non fallisce); • il rate esponenziale λ passa da fallimenti/giorno a fallimenti/ora in quanto le computazioni delle simulazioni con fallimenti/giorno duravano decine di ore (visto che in 100 giorni ogni CPU del sistema invia 86400000 risultati), in questo modo si hanno computazioni con tempi più brevi (anche se comunque lunghi). Capitolo 2 Cenni sulle distribuzioni di probabilità Nella modellazione del nostro sistema, utilizziamo diversi tipi di distribuzioni di probabilità. Presentiamo nei seguenti paragrafi alcuni aspetti caratteristici. 2.1 Esponenziale È una distribuzione continua nell’intervallo illimitato [0, +∞), caratterizzata dal numero reale λ. Le funzioni densità e ripartizione di probabilità sono rispettivamente: 0 x<0 fX (x) = λe−λx x ≥ 0 e FX (x) = 0 1 − λe−λx x<0 x≥0 I valori caratteristici di questa distribuzione sono: E[X] = 2.2 1 λ e σ 2 [X] = 1 σ2 Normale È una distribuzione continua nell’intervallo illimitato (−∞, +∞) ed è caratterizzata da due parametri: µ reale e σ reale positivo. Le funzioni densità e ripartizione di probabilità sono rispettivamente: fX (x) = e Z 1 x−µ 2 1 √ e− 2 ( σ ) σ 2π x FX (x) = −∞ 1 t−µ 2 1 √ e− 2 ( σ ) σ 2π 7 8 CAPITOLO 2. CENNI SULLE DISTRIBUZIONI DI PROBABILITÀ 10 1 ! = 10 !=1 8 0.8 6 0.6 4 0.4 2 0.2 0 0 0.2 0.4 0.6 0.8 1 0.1 0 0 2 4 6 8 0.01 ! = 0.1 ! = 0.01 0.08 0.008 0.06 0.006 0.04 0.004 0.02 0.002 0 10 0 20 40 60 80 100 0 0 200 400 600 800 1000 Figura 2.1: fX (x) della distribuzione esponenziale 1 1 0.8 0.8 0.6 0.6 0.4 0.4 0.2 0.2 ! = 10 0 0 0.2 0.4 0.6 0.8 !=1 1 0 1 1 0.8 0.8 0.6 0.6 0.4 0.4 0.2 0 2 4 6 10 0.2 ! = 0.1 0 8 0 20 40 60 80 ! = 0.01 100 0 0 200 400 600 Figura 2.2: FX (x) della distribuzione esponenziale 800 1000 2.3. WEIBULL 9 I valori caratteristici di questa distribuzione sono: E[X] = µ e σ 2 [X] = σ 2 0.35 µ = 1, !2 = 1.5 0.3 0.25 0.2 0.15 0.1 0.05 0 !3 !2 !1 0 1 2 3 4 Figura 2.3: fX (x) della distribuzione normale 2.3 Weibull È una distribuzione continua nell’intervallo illimitato [0, +∞) ed è caratterizzata da due paramentri: α > 0, detto parametro di forma e β > 0, detto parametro di scala. Le funzioni densità e ripartizione di probabilità sono rispettivamente: ( 0 x<0 α−1 x α fX (x) = −( β α x ) x≥0 e β β e ( FX (x) = 0 x α 1 − e−( β ) x<0 x≥0 Nel nostro caso, poiché α = β = x queste funzioni si riducono (nell’incognita t) a: ( 0 t<0 x fX (t) = t x−1 −( xt ) t ≥0 e x e ( FX (t) = 0 t x 1 − e−( x ) t<0 t≥0 10 CAPITOLO 2. CENNI SULLE DISTRIBUZIONI DI PROBABILITÀ 1 x=1 x=2 x=3 x=4 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 1 2 3 4 5 6 7 8 9 10 Figura 2.4: fX (x) della distribuzione Weibull 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 x=1 x=2 x=3 x=4 0.1 0 0 1 2 3 4 5 6 7 8 9 Figura 2.5: FX (x) della distribuzione Weibull 10 Capitolo 3 Modello del Sistema in Mobius 3.1 Descrizione Generale Il modello costruito per rappresentare il sistema da analizzare è costituito dalla composizione di tre SAN atomiche: una SAN rappresenta il comportamento degli N processori, una il comportamento del canale di trasmissione e l’ultima quello del voter. Nella prima SAN ogni 0.1 sec vengono inviati tanti risultati = 1 quanti sono i processori che in quell’istante funzionano e tanti risultati casuali (∈ [0, 9]) quanti sono i processori che non funzionano. Questi risultati vengono memorizzati in dei Places che sono condivisi con il modello atomico del cananle (ris 0,...,ris 9), una volta che i processori hanno inviato i risultati e abilitato l’invio ponendo un token nel Place READY (condiviso dal modello delle CPU e del canale), il modello del canale li invia verso il votatore. L’invio dei risultati al votatore puo’ avvenire in due modi: a seconda che il canale funzioni correttamente o no. Nel primo caso i risultati vengono copiati cosi’ come sono nei Places condivisi dal canale e dal votatore (ris 0 fin,...,ris 9 fin) e rimossi dai Places in comune tra il modello delle CPU e quello del canale, nel secondo caso i risultati vengono invece distorti (ovvero alcuni risultati possono essere cambiati) prima di essere copiati nei Places condivisi con il votatore. Una volta inviati i risultati il cananle pone un token nel Place VOTE ENABLED (condiviso con il modello del votatore). Infine nel terzo modello atomico, quando il votatore si accorge che il canale gli ha inviato i risultati (ovvero quando trova un token nel Place VOTE ENABLED), i risultati vengono contati (secondo la regola che può essere proporzionale o maggioritaria), rimossi dai Places in comune con il canale e si decide se il sistema è fallito o no. 3.2 3.2.1 Descrizione Specifica dei Modelli Modello Atomico delle CPU In questo modello il numero di processori (N ) è rappresentato dal numero di token presenti nei Places CPU OK (processori che funzionano correttamen11 12 CAPITOLO 3. MODELLO DEL SISTEMA IN MOBIUS Figura 3.1: SAN Composta del Modello te) e CPU KO (processori che mandano risultati random). Questi Places sono collegati alle attivitaà di fallimento e restore delle CPU che sono attività temporizzate secondo le dostribuzioni di probabilità descritte nel testo dell’esercizio. Nel modello c’è un’attività send result temporizzata (deterministica) che si attiva ogni 0.1 secondi. Questa attività ha sia un Input che un Output Gate (ig result e og result). L’Input gate in realtà non serve per l’abilitazione dell’attività che deve scattare sempre ogni 0.1 sec, ma serve ad evitare che al momento della sua attivazione l’attivià tolga un token dal Place CPU OK. La funzione dell’Output gate invece legge il numero di token eni Places delle CPU e invia un risultato uguale a 1 per ogni token in CPU OK e un risultato random per ogni token in CPU KO. I risultati inviati al canale sono rappresentati nel modello come token ed il loro valore dipende da dove il token viene messo. Infatti nel modello sono presenti 10 Places ris 0,...,ris 9, il numero di token dentro ognuno di questi Places indica il numero di risultati inviati con quel valore (per esempio se nel Place ris 1 ci sono 3 token significa che sono stati inviati al canale 3 risultati di valore 1). Infine og result mette un token nel Place READY a significare che le CPU hanno inviato i loro messaggi al canale. 3.2.2 Modello Atomico del Canale Quello che simula questo modello è il comportamento del canale che, quando viene abilitato per l’invio, prende i risultati dai Places ris 0,...,ris 9 e li trasferisce nei Places ris 0 fin,...,ris 9 fin. Il funzionamento del canale è rappresentato da un token che si può trovare nel Place BUS OK (il canale funziona correttamente) o nel Place BUS KO (il canale non funziona correttamente). 3.2. DESCRIZIONE SPECIFICA DEI MODELLI Figura 3.2: SAN delle CPU Output Gate: og_CPU int i_cpu_ko = CPU_KO->Mark(); ris_1->Mark()=CPU_OK->Mark(); srand(SEED); for (int k=1;k<=i_cpu_ko;k++) { int message = rand() % 10; { switch (message) Function } } case case case case case case case case case case 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: ris_0->Mark()++;break; ris_1->Mark()++;break; ris_2->Mark()++;break; ris_3->Mark()++;break; ris_4->Mark()++;break; ris_5->Mark()++;break; ris_6->Mark()++;break; ris_7->Mark()++;break; ris_8->Mark()++;break; ris_9->Mark()++;break; READY->Mark()=1; Figura 3.3: Codice della funzione dell’Output Gate della SAN delle CPU 13 14 CAPITOLO 3. MODELLO DEL SISTEMA IN MOBIUS L’abilitazione all’invio è rappresentata dal numero di token nel Place READY (se = 1 allora è abilitato altrimenti no). Quando viene messo un token in READY si attiva l’attività istantanea send bus (che ha sia un Input Gate ig bus send che un Output Gate og bus send), infatti il predicato di attivazione dell’Input Gate è che READY contenga un token, la funzione dell’Input Gate riazzera i token in READY. La funzione dell’Output Gate controlla lo stato del canale (ovvero in quale Place si trova il token del canale): se il canale funziona correttamente (e quindi c’è un token in BUS OK) allora in ognuno dei Places ris o fin,...,ris 9 fin vengono messi tanti token quanti rispettivamente in ris 0,...,ris 9, viene inoltre messo un token nel Place VOTE ENABLED a significare che il canale ha inviato i risultati; altrimenti il canale non sta funzionando correttamente e viene messo un token nel Place DISTORT. La distorsione dovuta al malfunzionamento del cananle viene realizzata tramite le attività istantanee send CANALE NO 03 e send CANALE NO 49 (entrambe con due case e collegate ognuna a un Input gate e due Output Gate) visto che il canale si comporta in maniera differente a seconda che stia inviando un risultato compreso fra 0 e 3 o un risultato compreso fra 4 e 9. Queste due attività hanno comportamenti del tutto simili tranne che per il fatto che esse vengono attivate se ci sono risultati da inviare al voter compresi rispettivamente in [0, 3] e [4, 9] e che i loro case hanno diverse probabilità di essere eseguiti (vedi testo eserciazio). Poichè il funzionamento delle due attività è poi del tutto identico, si considera ora solo l’attività send CANALE NO 03. Come già detto questa attività si attiva quandi il predicato della sua Input gate è vero, ovvero quando la somma dei marker dei Places ris 0,...,ris 3 è maggiore di zero e c’è un token nel Place DISTORT. Una volta attivata quest’attività viene eseguito uno dei due case ovvero la funzione della corrispondente Output gate. Il primo ha probabilità 0.7 di essere eseguito e corrisponde al caso in cui il cananle pur non funzionando correttamente invia il risultato senza cambiarlo, la funzione della sua Output gate quindi non fa altro che cercare il primo Place fra ris 0,...,ris 3 contenete almeno un token, decrementare il numero di token in quel Place e aumentare di uno il numero di token nel corrispondente Place di risultati inviati al voter (quindi se c’è un token in ris 0, questo viene levato da lı̀ e messo in ris 0 fin). Se invece viene eseguito l’altro case il risultato inviato al voter diventa un numero casuale compreso fra 4 e 9, la funzione dell’Output gate di questo case decrementa il numero di token nel primo Place che ne contiene almeno uno, genera un numero random fra 4 e 9 ed aggiunge un token al Place corrispondente contenente i risultati iviati al voter (quindi se il numero random è 4 aggiungerà un token al Place ris 4 fin). Alla fine della funzione dell’Output gate si controlla se ci sono ancora risultati da inviare: in tal caso non viene fatto nulla (le attività si riattiveranno istantaneamente e spediranno i risultati rimanenti), in caso contrario invece viene posto un token nel Place VOTE ENABLED e tolto il token da DISTORT. Si noti che a differenza dell’invio di risultati con il canale funzionante (in cui i risultati venivano spostati tutti insiem) in questo caso i risultati vengono processati uno per uno, questo è dovuto al fatto che le attivià che possono distorcere i risultati devono essere eseguite su ogni risultato singolarmente e non su tutti insieme altrimenti il malfunzionamento del canale comporterebbe che o tutti i risultati siano cambiati o che nessun risultato sia cambiato visto che si sceglierebbe una volta sola il case da eseguire. 3.2. DESCRIZIONE SPECIFICA DEI MODELLI 15 Figura 3.4: SAN del Canale Input Gate: Predicate Function ig_BUS (READY->Mark()==1) READY->Mark()=0; Figura 3.5: Codice della dell’Input Gate ig bus della SAN del Canale Output Gate: Function og_BUS_SEND if (BUS_OK->Mark()==1) { ris_0_fin->Mark()=ris_0->Mark(); ris_1_fin->Mark()=ris_1->Mark(); ris_2_fin->Mark()=ris_2->Mark(); ris_3_fin->Mark()=ris_3->Mark(); ris_4_fin->Mark()=ris_4->Mark(); ris_5_fin->Mark()=ris_5->Mark(); ris_6_fin->Mark()=ris_6->Mark(); ris_7_fin->Mark()=ris_7->Mark(); ris_8_fin->Mark()=ris_8->Mark(); ris_9_fin->Mark()=ris_9->Mark(); ris_0->Mark()=0; ris_1->Mark()=0; ris_2->Mark()=0; ris_3->Mark()=0; ris_4->Mark()=0; ris_5->Mark()=0; ris_6->Mark()=0; ris_7->Mark()=0; ris_8->Mark()=0; ris_9->Mark()=0; VOTE_ENABLED->Mark()=1; } else { VOTE_DISTORT->Mark() = 1; } Figura 3.6: Codice della dell’Output Gate og bus send della SAN del Canale 16 CAPITOLO 3. MODELLO DEL SISTEMA IN MOBIUS Input Gate: IG_CANALE_NO_03 ((ris_0->Mark()+ris_1->Mark()+ris_2->Mark()+ris_3->Mark()>0) && (VOTE_DISTORT->Mark()>0)) Predicate Function Figura 3.7: Codice della dell’Input Gate ig canale no 03 della SAN del Canale Input Gate: Predicate Function IG_CANALE_NO_49 ((ris_4->Mark()+ris_5->Mark()+ris_6->Mark()+ris_7->Mark()+ris_8>Mark()+ris_9->Mark()>0) && (VOTE_DISTORT->Mark()>0)) ; Figura 3.8: Codice della dell’Input Gate ig canale no 49 della SAN del Canale 3.2.3 Modello Atomico del Voter Questo modello simula il comportamento del votatore che quando riceve i messaggi dal canale deve contarli e decidere se il sitema ha un fallimento o meno. Il conteggio dei risultati avviene nell’Output gate dell’unica attività (istantanea) di questo modello: vote result. Questa attività viene abilitata quando il predicato della sua Input gate è vero, cioè quando c’è un token nel Place VOTE ENABLED. A questo punto viene eseguita prima la funzione dell’Input gate che riazzera i token in VOTE ENABLED, dopodichè viene eseguita la funzione dell’Output gate. Questa funzione inizialmente definisce un array di dieci elementi in cui viene memorizzato nella posizione i-esima il numero di risultati ricevuti con valore i. A questo punto si scorre tutto il vettore cercando il suo massimo, in questo modo si ha che il max del vettore rappresenta il numero massimo di risultati uguali ricevuti e la posizione del massimo all’interno del vettore è il loro valore. Per sapere se il sistema fallisce o no basta controllare che la posizione del massimo del vettore sia uguale a 1. Se la posizione del massimo è diversa da 1 allora si ha un fallimento, a questo punto si controlla il numero di token nel Place SYS KO (che rappresenta il numero di volte che il sistema ha fallito) per sapere se quello appena trovato è il primo fallimento. Se è cosı̀ viene posto un token nel Place PRIMO (l’utilità di questo Place sarà chiarita nella sezione riguardante le variabili di reward in cui si vedrà come utilizzarlo per avere l’MTTF del sistema), poi si aggiunge un token nel Place SYS KO e si svuotano i Places dei risultrati che cosı̀ saranno pronti a ricevere i nuovi risultati dopo 0.1 sec. Se invece il sistema non fallisce (quindi si ha che la posizione del massimo è) 1 si controlla il numero di token nel Place PRIMO: se c´‘e un solo token ne viene aggiunto un altro, altrimenti si lascia invariato il numero di token in PRIMO. Dopo questo controllo viene aggiunto un token nel Place SYS OK (che contiene un token per ogni volta che il sistema ha funzionato correttamente) e vengono svuotati i Places contenenti i risultati. 3.2. DESCRIZIONE SPECIFICA DEI MODELLI Output Gate: 17 OG_03_cambia int msg=rand()%6; Function if (ris_0->Mark()>0) { ris_0->Mark()--; } else { if (ris_1->Mark()>0) { ris_1->Mark()--; } else { if (ris_2->Mark()>0) { ris_2->Mark()--; } else { ris_3->Mark()--; } } } switch (msg) { case case case case case case } 0: 1: 2: 3: 4: 5: ris_4_fin->Mark()++;break; ris_5_fin->Mark()++;break; ris_6_fin->Mark()++;break; ris_7_fin->Mark()++;break; ris_8_fin->Mark()++;break; ris_9_fin->Mark()++;break; if ((ris_0->Mark()+ris_1->Mark()+ris_2->Mark()+ris_3->Mark()+ris_4>Mark()+ris_5->Mark()+ris_6->Mark()+ris_7->Mark()+ris_8>Mark()+ris_9->Mark())==0) { VOTE_ENABLED->Mark()=1; VOTE_DISTORT->Mark()=0; } Figura 3.9: Codice della dell’Output Gate og 03 cambia della SAN del Canale 18 CAPITOLO 3. MODELLO DEL SISTEMA IN MOBIUS Output Gate: Function OG_03_uguale if (ris_0->Mark()>0) { ris_0->Mark()--; ris_0_fin->Mark()++; } else { if (ris_1->Mark()>0) { ris_1->Mark()--; ris_1_fin->Mark()++; } else { if (ris_2->Mark()>0) { ris_2->Mark()--; ris_2_fin->Mark()++; } else { ris_3->Mark()--; ris_3_fin->Mark()++; } } } if ((ris_0->Mark()+ris_1->Mark()+ris_2->Mark()+ris_3->Mark()+ris_4>Mark()+ris_5->Mark()+ris_6->Mark()+ris_7->Mark()+ris_8>Mark()+ris_9->Mark())==0) { VOTE_ENABLED->Mark()=1; VOTE_DISTORT->Mark()=0; } Figura 3.10: Codice della dell’Input Gate og 03 uguale della SAN del Canale 3.2. DESCRIZIONE SPECIFICA DEI MODELLI Output Gate: 19 OG_49_cambia int msg=rand()%4; Function if (ris_4->Mark()>0) { ris_4->Mark()--; } else { if (ris_5->Mark()>0) { ris_5->Mark()--; } else { if (ris_6->Mark()>0) { ris_6->Mark()--; } else { if (ris_7->Mark()>0) { ris_7->Mark()--; } else { if (ris_8->Mark()>0) { ris_8->Mark()--; } else { ris_9->Mark()--; } } } } } switch (msg) { case 0: ris_0_fin->Mark()++;break; case 1: ris_1_fin->Mark()++;break; case 2: ris_2_fin->Mark()++;break; case 3: ris_3_fin->Mark()++;break; } if ((ris_0->Mark()+ris_1->Mark()+ris_2->Mark()+ris_3->Mark()+ris_4>Mark()+ris_5->Mark()+ris_6->Mark()+ris_7->Mark()+ris_8>Mark()+ris_9->Mark())==0) { VOTE_ENABLED->Mark()=1; VOTE_DISTORT->Mark()=0; } Figura 3.11: Codice della dell’Output Gate og 49 cambia della SAN del Canale 20 CAPITOLO 3. MODELLO DEL SISTEMA IN MOBIUS Output Gate: Function OG_49_uguale if (ris_4->Mark()>0) { ris_4->Mark()--; ris_4_fin->Mark()++; } else { if (ris_5->Mark()>0) { ris_5->Mark()--; ris_5_fin->Mark()++; } else { if (ris_6->Mark()>0) { ris_6->Mark()--; ris_6_fin->Mark()++; } else { if (ris_7->Mark()>0) { ris_7->Mark()--; ris_7_fin->Mark()++; } else { if (ris_8->Mark()>0) { ris_8->Mark()--; ris_8_fin->Mark()++; } else { ris_9->Mark()--; ris_9_fin->Mark()++; } } } } } if ((ris_0->Mark()+ris_1->Mark()+ris_2->Mark()+ris_3->Mark()+ris_4>Mark()+ris_5->Mark()+ris_6->Mark()+ris_7->Mark()+ris_8>Mark()+ris_9->Mark())==0) { VOTE_ENABLED->Mark()=1; VOTE_DISTORT->Mark()=0; } Figura 3.12: Codice della dell’Input Gate og 49 uguale della SAN del Canale 3.2. DESCRIZIONE SPECIFICA DEI MODELLI Figura 3.13: SAN del Votatore Input Gate: Predicate Function ig_voter (VOTE_ENABLED->Mark()==1) VOTE_ENABLED->Mark() = 0; Figura 3.14: Codice della dell’Input Gate ig voter della SAN del Voter 21 22 CAPITOLO 3. MODELLO DEL SISTEMA IN MOBIUS Output Gate: og_decide int vote[10]; long message; vote[0]=ris_0_fin->Mark(); vote[1]=ris_1_fin->Mark(); vote[2]=ris_2_fin->Mark(); vote[3]=ris_3_fin->Mark(); vote[4]=ris_4_fin->Mark(); vote[5]=ris_5_fin->Mark(); vote[6]=ris_6_fin->Mark(); vote[7]=ris_7_fin->Mark(); vote[8]=ris_8_fin->Mark(); vote[9]=ris_9_fin->Mark(); int max = vote[1]; int msg = 1; for (int g=0;g<10;g++) { if (vote[g]>max) { max = vote[g]; msg = g; } } Function if (msg != 1) { if (SYS_KO->Mark() == 0) { PRIMO->Mark() = 1; } SYS_KO->Mark()++; } else { if (PRIMO->Mark() == 1) { PRIMO->Mark() = 2; } SYS_OK->Mark()++; } ris_0_fin->Mark()=0; ris_1_fin->Mark()=0; ris_2_fin->Mark()=0; ris_3_fin->Mark()=0; ris_4_fin->Mark()=0; ris_5_fin->Mark()=0; ris_6_fin->Mark()=0; ris_7_fin->Mark()=0; ris_8_fin->Mark()=0; ris_9_fin->Mark()=0; Figura 3.15: Codice della dell’Output Gate og decide della SAN del Voter Capitolo 4 Simulazioni 4.1 Parametri della simulazione Lo scopo principale del progetto assegnatoci era il condurre un certo numero di simulazioni sul sistema da noi modellato, al variare di alcune quantità rispetto su cui il modello è stato parametrizzato: Parametro λ N X Valori Assunti 1 1 100 , 10 ,1,10 2, · · · , 5 1, · · · , 4 Descrizione Parametro della distribuzione esponenziale Numero dei processori Parametro della Weibull Tabella 4.1: Parametri della simulazione In realtà non abbiamo simulato su tutte le possibili combinazioni dei valori appena mostrati, bensı̀ abbiamo condotto tre famiglie di simulazioni tenendo fissi ogni volta due parametri e variando sul terzo. Vedremo in seguito ed in dettaglio i vari casi che abbiamo affrontato: adesso dobbiamo fare qualche precisazione sulle assunzioni fatte. Lo scopo principale del progetto era infatti quello di determinare due quantità: • Il tempo medio al fallimento del sistema, ovvero il mean time to failure, indice della reliability. • La probabilità a steady state che il sistema fosse in fallimento, cioè l’availability. Sicuramente la parte più critica è stata quella di determinare in maniera ragionevole quelle che sono le quantità caratteristiche di una simulazione steady state, cioè la durata del transiente e la dimensione dei batch. Infatti prendere risultati quando il sistema non è stabile (e si trova dunque nella sua fase transiente) può inquinare i risultati forniti dagli stimatori, cosı̀ come del resto si dovrebbe scegliere una lunghezza del batch tale che ogni prova possa essere considerata indipendente dalle altre. Ci siamo accorti allora che la nostra analisi “naturalmente” convergeva sullo studio delle distribuzioni di probabilità presenti nel sistema, cosa che ci ha permesso di fare alcune importanti assunzioni: 23 24 CAPITOLO 4. SIMULAZIONI • Le CPU possono fallire in modo indipendente ma tutte inviano i loro valori su di un unico canale, il fallimento del quale sarà quindi molto più incisivo sul comportamente dell’intero sistema. • Creando alcuni grafici delle distribuzioni esponenziale e di Weibull (utilizzando il software Matlab), abbiamo potuto osservare come la probabilità di avere un singolo fallimento fosse naturalmente crescente rispetto al numero dei giorni, ma raggiungesse valori superiori al 90-95% in tempi assai diversi, molto più lunghi per la distribuzione esponenziale che è proprio quella del canale (fatta eccezione per il caso in cui λ = 10). abbiamo Abbiamo dunque pensato di poter prendere λ come valore cruciale nel determinare durata del transiente e batch size, utilizzandolo anche per la stima del MTTF : cominciamo a parlare del secondo caso. Il parametro λ rappresenta il numero di fallimenti per ora del canale, dunque volendo fare un esempio, ci si può aspettare benissimo che con λ = 0.1 (cioè un fallimento in media ogni 10 ore) una simulazione terminante a 50 ore possa dare risultati ragionevoli sul tempo medio al fallimento. Abbiamo allora posto nella reward variable riguardante il MTTF i seguenti valori, al variare di λ λ 1 100 1 10 1,10 Intervallo di tempo 0 · · · 500 0 · · · 50 5 Tabella 4.2: Intervalli di tempo per il MTTF al variare di λ Il problema della simulazione steady state si è rivelato più arduo da affrontare, anche se alla fine abbiamo individuato dei valori del transiente e del batch size, di seguito riportati sempre al variare di λ, che ci hanno permesso di ottenere i risultati seguenti: λ 1 100 1 10 1,10 Transiente 500 50 5 Batch Size 1000 100 10 Tabella 4.3: Transiente e Batch Size per il caso steady state al variare di λ Come si vede ad esempio nel caso λ = 0.1, il porre la durata del transiente a 50 ore dall’inizio della simulazione teoricamente ci permette di trascurare un periodo di tempo durante il quale ci saranno stati abbastanza fallimenti e quindi il sistema dovrebbe aver raggiunto una certa stabilità; la durata del batch size è stata scelta con l’intento di ottenere dei batch che tra loro fossero scorrelati in modo non aver risultati falsati. 4.2 Reward variables In questa sezione mostriamo le reward variables utilizzate nell’ambito del nostro progetto: sappiamo infatti che le reward structures vengono estensivamente 4.3. RATE REWARDS 25 impiegate nei simulatori per ottenere informazioni su caratteristiche del sistema in esame, quali appunto la reliability oppure l’availability. Nel nostro caso abbiamo fatto uso sia di rate rewards che di impulse rewards, come di seguito ci accingiamo ad illustrare. 4.3 Rate Rewards Tramite le rate reward abbiamo informazione sulla “persistenza” del sistema in certi stati, durante un certo intervallo di tempo: nel nostro caso abbiamo utilizzato due variabili di reward che contassero il numero di token presenti nei places SYS OK e SYS KO, indicanti rispettivamente il numero di successi e fallimenti del sistema di votazione. La probabilità a steady state che il sistema sia in fallimento (cioè che restituisca un risultato che non è 1) verrà calcolata semplicemente nel seguente modo Numero di token in SY S KO Numero di token in SY S OK + Numero di token in SY S KO Nelle pagine successive elenchiamo le rate reward variables Variable Affecting Models SYS OK Definition Voter Rate rewards code return voter-¿SYS OK->Mark(); Impulse reward none Simulator statistics type = steady steate estimate mean confidence level = 0.95 relative confidence interval = 0.1 initial transient = 50 batch size = 100 Tabella 4.4: SYS OK rate reward variable 4.4 Impulse Rewards Le variabili di tipo impulse sono tipicamente associate ai completamenti delle attività presenti nel sistema: possono dare informazioni su quanto tali attività vengano eseguite, sia nel caso di simulazioni terminanti che steady state. L’unica variabile di tipo impulse che abbiamo usato è quella relativa alla stima del tempo medio al fallimento: in questo contesto facciamo uso del place SYS KO, verificando quando vi viene messo il primo token (condizione che indica il primo fallimento del sistema), utilizzando al contempo il place PRIMO per controllare che il valore riportato dal simulatore (cioè SIS OK− >Mark) venga restituito solamente una volta. Sappiamo infatti che l’invio di un voto è un evento temporizzato, dunque il numero di token in SYS OK al momento del 26 CAPITOLO 4. SIMULAZIONI Variable Affecting Models SYS KO Definition Voter Rate rewards return voter-¿SYS KO->Mark(); Impulse reward none Simulator statistics type = steady steate estimate mean confidence level = 0.95 relative confidence interval = 0.1 initial transient = 50 batch size = 100 Tabella 4.5: SYS KO rate reward variables Variable Affecting Models MTTF Definition Voter Rate rewards code none Impulse reward if (voter->SYS KO-¿Mark()==1 ) && (voter->PRIMO-¿Mark() == 1) { return 1; } else { return 0; } Simulator statistics type = steady steate estimate mean confidence level = 0.95 relative confidence interval = 0.1 initial transient = 50 batch size = 100 Tabella 4.6: SYS OK rate reward variable primo fallimento rappresenta proprio il time to failure. Mostriamo di seguito come abbiamo definito la reward variable per il MTTF : Capitolo 5 Risultati delle Simulazioni In questo capitolo vengono riportati e commentati i risultati ottenuti dalle simulazioni. 5.1 Mean Time To Failure In questa sezione si presentano, discutendoli brevemente, i risultati forniti dalle simulazioni da noi condotte per calcolare il tempo medio al fallimento del sistema. In figura 5.1 troviamo a confronto i valori del MTTF nel caso in cui il parametro che varia è N (numero dei processori): come si può osservare, il valore del tempo medio al fallimento descresce all’aumentare del numero N , fatta eccezione per il caso in cui N = 3. Probabilmente questo é dovuto al fatto che con tale valore abbiamo fallimento quando almeno 2 valori su 3 sono uguali e diversi da 1. Tale caso è ovviamente più frequente di quando il numero di processori è 2, e per N = 4, 5 non necessariamente bastano 2 risulati uguali diversi da 1. I casi in cui i parametri che variano sono λ e X sono simili, come si può osservare dalle figure 5.2 e 5.3: il tempo medio al fallimento decresce all’aumentare dei valori, ma con una sorprendente proprieta’. Infatti, mentre ci potevamo aspettare che ciò accadesse con λ crescente (il che significa più fallimenti del canale), è quanto meno inaspettato il comportamento che si riscontra quando aumenta il valore di X. Dalla distribuzione di Weibull si osserva che quando X cresce in realtà si ha un tempo maggiore per avere fallimento, questo sembra andare in controtendenza con i risultati ottenuti per il MTTF (che diminuiscono): la spiegazione è che il canale fallisce sempre con lo stesso rate (qui λ = 0.1) e, quando ci sono meno fallimenti (quindi per X maggiore) al canale arriverà un maggior numero di valori uguali ad uno che potranno essere poi distorti dal bus di sistema in modo tale da arrivare al votatore e causare un fallimento. Se invece al canale arrivano più valori scorretti, aumenta la probabilità che essi siano modificati in numeri distinti (ed eventualmente anche uguali ad 1). Riportiamo qui di seguito i grafici del MTTF ottenuti con le simulazioni. 27 28 CAPITOLO 5. RISULTATI DELLE SIMULAZIONI 9,000 8,000 7,000 6,000 MTTF (h) 5,000 4,000 3,000 2,000 1,000 0,000 2 3 4 5 Numero processori Figura 5.1: Grafico del valore del MTTF (in ore) con λ = 0.1, x = 2 al variare di N 5.1. MEAN TIME TO FAILURE 29 10,000 9,000 8,000 7,000 6,000 MTTF 5,000 4,000 3,000 2,000 1,000 0,000 1 2 3 4 X Figura 5.2: Grafico del valore del MTTF (in ore) con λ = 0.1, N = 3 al variare di x 30 CAPITOLO 5. RISULTATI DELLE SIMULAZIONI 9,000 8,000 7,000 6,000 MTTF (h) 5,000 4,000 3,000 2,000 1,000 0,000 2 3 4 5 Numero processori Figura 5.3: Grafico del valore del MTTF (in ore) con x = 2, N = 3 al variare di λ 70 60 50 Ore 40 30 20 10 0 0 50 100 150 200 Batch 250 300 350 Figura 5.4: MTTF caso N = 2, λ = 0.1 e X = 2 400 5.1. MEAN TIME TO FAILURE 31 70 60 50 Ore 40 30 20 10 0 0 50 100 150 200 Batch 250 300 350 400 Figura 5.5: MTTF caso N = 3, λ = 0.1 e X = 2 70 60 50 Ore 40 30 20 10 0 0 50 100 150 200 250 300 350 400 Batch Figura 5.6: MTTF caso N = 4, λ = 0.1 e X = 2 450 32 CAPITOLO 5. RISULTATI DELLE SIMULAZIONI 45 40 35 30 Ore 25 20 15 10 5 0 0 50 100 150 200 250 Batch 300 350 400 450 500 Figura 5.7: MTTF caso N = 5, λ = 0.1 e X = 2 350 300 250 Ore 200 150 100 50 0 0 50 100 150 200 Batch 250 300 350 Figura 5.8: MTTF caso L = 0.01, N = 3, X = 2 400 5.1. MEAN TIME TO FAILURE 33 70 60 50 Ore 40 30 20 10 0 0 50 100 150 200 Batch 250 300 350 400 Figura 5.9: MTTF caso L = 0.1, N = 3, X = 2 5 4.5 4 3.5 Ore 3 2.5 2 1.5 1 0.5 0 0 50 100 150 200 Batch 250 300 350 Figura 5.10: MTTF caso L = 1, N = 3, X = 2 400 34 CAPITOLO 5. RISULTATI DELLE SIMULAZIONI 0.9 0.8 0.7 0.6 Ore 0.5 0.4 0.3 0.2 0.1 0 0 50 100 150 200 Batch 250 300 350 400 Figura 5.11: MTTF caso L = 10, N = 3, X = 2 60 50 Ore 40 30 20 10 0 0 50 100 150 200 250 300 Batch Figura 5.12: MTTF caso X = 1, N = 3, λ = 0.1 350 5.1. MEAN TIME TO FAILURE 35 70 60 50 40 30 20 10 0 0 50 100 150 200 250 300 350 400 Figura 5.13: MTTF caso X = 2, N = 3, λ = 0.1 30 25 Ore 20 15 10 5 0 0 50 100 150 Batch 200 250 Figura 5.14: MTTF caso X = 3, N = 3, λ = 0.1 300 36 CAPITOLO 5. RISULTATI DELLE SIMULAZIONI 50 45 40 35 Ore 30 25 20 15 10 5 0 0 50 100 150 200 250 300 350 Batch Figura 5.15: MTTF caso X = 4, N = 3, λ = 0.1 5.2 5.2.1 Steady state Caso λ variabile, X = 2, N = 3 In questo caso, all’aumentare di λ crescono il numero di fallimenti che si hanno nell’unità di tempo fissata ed infatti, come mostrano i seguenti grafici la probabilità di fallimento steady state del sistema è maggiore. 5.2.2 Caso X variabile, λ = 0.1, N = 3 Al variare di X, analogamente a quanto descritto per il caso del MTTF la probabilità di fallimento decresce all’aumentare del parametro X della Weibull (tranne nel caso X = 2 che, come si vedrá in seguito, risulta assai particolare). Riportiamo qui di seguito i grafici della probabilità a steady state ottenuti con le simulazioni. 5.2.3 Caso N variabile, λ = 0.1, X = 2 Osservando i grafici ottenuti da queste simulazioni si nota come il numero di CPU che partecipano alla votazione influenzi la probabilitá di fallimento del sistema molto meno di quanto si potesse immaginare. In effetti come ci si aspetterebbe la probabilitá di fallimento tende a diminuire al crescere del numero di processori, anche se molto lentamente, infatti la differenza tra la probabilitá di fallimento con N = 2 e N = 5 é di 0, 0015. 5.2. STEADY STATE 37 !3 8.5 x 10 8 7.5 Probabilità 7 6.5 6 5.5 5 4.5 0 50 100 150 Batch 200 250 300 Figura 5.16: Steady state caso λ = 0.01, N = 3, X = 2 0.04 0.038 0.036 0.034 Probabilità 0.032 0.03 0.028 0.026 0.024 0.022 0.02 0 20 40 60 80 100 120 Batch Figura 5.17: Steady state caso λ = 1, N = 3, X = 2 140 38 CAPITOLO 5. RISULTATI DELLE SIMULAZIONI 0.09 0.085 0.08 Probabilità 0.075 0.07 0.065 0.06 0.055 0.05 0.045 0 20 40 60 80 100 120 140 Batch Figura 5.18: Steady state caso λ = 10, N = 3, X = 2 0.43 0.42 Probabilità 0.41 0.4 0.39 0.38 0.37 0 20 40 60 80 100 120 Batch Figura 5.19: Steady state caso X = 1, λ = 0.1 e N = 3 140 5.2. STEADY STATE 39 !3 8.5 x 10 8 7.5 Probabilità 7 6.5 6 5.5 5 4.5 0 50 100 150 Batch 200 250 300 Figura 5.20: Steady state caso X = 2, λ = 0.1 e N = 3 !3 12 x 10 11 10 Probabilità 9 8 7 6 5 4 0 20 40 60 80 100 120 Batch Figura 5.21: Steady state caso X = 3, λ = 0.1 e N = 3 140 40 CAPITOLO 5. RISULTATI DELLE SIMULAZIONI !3 9.5 x 10 9 Probabilità 8.5 8 7.5 7 6.5 6 0 20 40 60 80 100 120 140 Batch Figura 5.22: Steady state caso X = 4, λ = 0.1 e N = 3 L’unico caso che si discosta da questo andamento, come giá notato nel caso precedente, é il caso in cui N = 3. Effettivamente nel caso in cui λ = 0.1 la configurazione migliore del sistema risulta essere quella con tre CPU che falliscono secondo una distribuzione di probabilitá Weibull con parametri (α, β) = (2, 2). Se si osserva il grafico corrispondente a questa situazione si vede subito che la probabilitá di fallimento é decisamente minore rispetto alle altre (questo si puøosservare anche nel caso in cui si fa variare il valore di X). 5.2. STEADY STATE 41 0.016 0.0155 0.0145 0.014 0.0135 0.013 0.0125 0 20 40 60 80 100 120 140 Batch Figura 5.23: MTTF caso L = 0.01, N = 3, X = 2 !3 10 x 10 9 8 Probabilità Probabilità 0.015 7 6 5 4 3 0 20 40 60 80 100 120 Batch Figura 5.24: MTTF caso L = 0.1, N = 3, X = 2 140 42 CAPITOLO 5. RISULTATI DELLE SIMULAZIONI 0.02 0.018 0.016 Probabilità 0.014 0.012 0.01 0.008 0.006 0.004 0 20 40 60 80 100 120 140 Batch Figura 5.25: MTTF caso L = 1, N = 3, X = 2 0.02 0.018 0.016 Probabilità 0.014 0.012 0.01 0.008 0.006 0.004 0 20 40 60 80 100 120 Batch Figura 5.26: MTTF caso L = 10, N = 3, X = 2 140 Capitolo 6 Computer farm Le simulazioni con Mobius del presente progetto sono state eseguite utilizzando i seguenti calcolatori: Tabella 6.1: default Nome alice sara antani nil pear Processore Intel Celeron 1.4 GHz AMD Sempron 3100+ AMD Athlon 3800+ Intel Pentium 4 1.6 GHz PowerPC G4 1.67 Memoria RAM 384 MB 1GB 1 GB 1 GB 1 GB 43 Sistema operativo Windows ME Windows XP Pro Windows XP Pro SuSE Linux 10.0 Windows XP Pro (emulazione x86) 44 CAPITOLO 6. COMPUTER FARM Elenco delle tabelle 4.1 4.2 4.3 4.4 4.5 4.6 Parametri della simulazione . . . . . . . . . . . . Intervalli di tempo per il MTTF al variare di λ . Transiente e Batch Size per il caso steady state al SYS OK rate reward variable . . . . . . . . . . . SYS KO rate reward variables . . . . . . . . . . . SYS OK rate reward variable . . . . . . . . . . . . . . . . . 23 24 24 25 26 26 6.1 default . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 45 . . . . . . . . . . . . . . variare di λ . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 ELENCO DELLE TABELLE Elenco delle figure 2.1 2.2 2.3 2.4 2.5 fX (x) della distribuzione esponenziale FX (x) della distribuzione esponenziale fX (x) della distribuzione normale . . . fX (x) della distribuzione Weibull . . . FX (x) della distribuzione Weibull . . . 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 SAN Composta del Modello . . . . . . . . . . . . . . . . . . . . . SAN delle CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . Codice della funzione dell’Output Gate della SAN delle CPU . . SAN del Canale . . . . . . . . . . . . . . . . . . . . . . . . . . . . Codice della dell’Input Gate ig bus della SAN del Canale . . . . Codice della dell’Output Gate og bus send della SAN del Canale Codice della dell’Input Gate ig canale no 03 della SAN del Canale Codice della dell’Input Gate ig canale no 49 della SAN del Canale Codice della dell’Output Gate og 03 cambia della SAN del Canale Codice della dell’Input Gate og 03 uguale della SAN del Canale . Codice della dell’Output Gate og 49 cambia della SAN del Canale Codice della dell’Input Gate og 49 uguale della SAN del Canale . SAN del Votatore . . . . . . . . . . . . . . . . . . . . . . . . . . . Codice della dell’Input Gate ig voter della SAN del Voter . . . . Codice della dell’Output Gate og decide della SAN del Voter . . 5.1 Grafico del valore del MTTF (in ore) con λ = 0.1, x = 2 al variare di N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grafico del valore del MTTF (in ore) con λ = 0.1, N = 3 al variare di x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grafico del valore del MTTF (in ore) con x = 2, N = 3 al variare di λ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MTTF caso N = 2, λ = 0.1 e X = 2 . . . . . . . . . . . . . . . . MTTF caso N = 3, λ = 0.1 e X = 2 . . . . . . . . . . . . . . . . MTTF caso N = 4, λ = 0.1 e X = 2 . . . . . . . . . . . . . . . . MTTF caso N = 5, λ = 0.1 e X = 2 . . . . . . . . . . . . . . . . MTTF caso L = 0.01, N = 3, X = 2 . . . . . . . . . . . . . . . . MTTF caso L = 0.1, N = 3, X = 2 . . . . . . . . . . . . . . . . . MTTF caso L = 1, N = 3, X = 2 . . . . . . . . . . . . . . . . . . MTTF caso L = 10, N = 3, X = 2 . . . . . . . . . . . . . . . . . MTTF caso X = 1, N = 3, λ = 0.1 . . . . . . . . . . . . . . . . . MTTF caso X = 2, N = 3, λ = 0.1 . . . . . . . . . . . . . . . . . 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 47 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 9 10 10 12 13 13 15 15 15 16 16 17 18 19 20 21 21 22 28 29 30 30 31 31 32 32 33 33 34 34 35 48 ELENCO DELLE FIGURE 5.14 5.15 5.16 5.17 5.18 5.19 5.20 5.21 5.22 5.23 5.24 5.25 5.26 MTTF caso X = 3, N = 3, λ = 0.1 . . . . MTTF caso X = 4, N = 3, λ = 0.1 . . . . Steady state caso λ = 0.01, N = 3, X = 2 Steady state caso λ = 1, N = 3, X = 2 . . Steady state caso λ = 10, N = 3, X = 2 . Steady state caso X = 1, λ = 0.1 e N = 3 Steady state caso X = 2, λ = 0.1 e N = 3 Steady state caso X = 3, λ = 0.1 e N = 3 Steady state caso X = 4, λ = 0.1 e N = 3 MTTF caso L = 0.01, N = 3, X = 2 . . . MTTF caso L = 0.1, N = 3, X = 2 . . . . MTTF caso L = 1, N = 3, X = 2 . . . . . MTTF caso L = 10, N = 3, X = 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 36 37 37 38 38 39 39 40 41 41 42 42