validité (validity)
si un processus décide v
alors v
est une valeur proposéeterminaison (termination)
tous les processus corrects decident finalementcoherence (agreement)
deux processus corrects ne peuvent decider differemmentintegrite (integrity)
un processus doit decider au plus une foisConsensuls resoluble avec ♦S. En effet ♦S est le plus faible detecteur pour resoudre le consensus (minimalite) avec une majorite de processus corrects.
propose(v)
le processus appelant propose une valeur initiale v
decide(v)
le processus appelant décide v
propose(4) decide(7)
v v
-------------------------------->
propose(4) decide(7)
v v
-------------------------------->
propose(4) decide(7)
v v
-------------------------------->
correct
: ne défaille pas pendant toute la dureé de l’exécutionfautif
: pas correctfranche (crash)
: le processus fautif n’emet plus ni ne recoit de message de facon permanente -> silence sur defaillance (fail-silent), variante faute-visible (fail-stop)omission
: transitoiretemporaire
: trop tot ou trop tardByzantin
: malveillance.______________________________.
|__________________. Byzantine |
|_______. omission | |
| crash | | |
|_______|__________|___________|
Fiable (reliable)
: si p
execute send(m)
vers q
et q
est correct, alors q
recevera m
Quasi-fiable (quasi-reliable)
: si p
execute send(m)
vers q
et, p
et q
sont corrects, alors q
recevera m
Equitable (fair-lossy)
: si un processus correct envoie un message m
a q
une infinite de fois, alors q
recevera m
(a)sync
Borne delta (Δ) sur le temps de transmission
si un processus p
envoie un message vers q
a l’instant t
, alors q
recoit le message avant t+Δ
Borne phi (Φ) sur la vitesse relative des processus
si le processus le plus rapide prend x
unites de temps pour un traitement, alors le processus le plus lent ne peut pas prendre plus xΦ
temps pour faire le meme traitementPermet une detection parfaite
| 2Δ + xΦ |
|------------->|
p -------------------------------->
| u alive? |^ aha
\. /
q -------------------------------->
Dwork, Lynch, Stockmeier - 1998
T
appele GST
: global stabilization timeGST
le systeme est instable (pas de bornes)GST
le systeme est stable (bornes)GST
est inconnuChandra and Toueg define eight classes of failure detectors, based on when they suspect faulty processes and non-faulty processes. Suspicion of faulty processes comes under the heading of completeness; of non-faulty processes, accuracy.
forte
: A partir d’un moment tout processus defaillant est suspecte par tous
les processus correctsstrong
: Every faulty process is eventually permanently suspected by every non-faulty process.
faible
: a partir d’un moment tout processus defaillant est suspecte par un
processus correctweak
: Every faulty process is eventually permanently suspected by some non-faulty process.There are two temporal logic operators embedded in these statements: “eventually permanently” means that there is some time t0 such that for all times t ≥ t0, the process is suspected. Note that completeness says nothing about suspecting non-faulty processes: a paranoid failure detector that permanently suspects everybody has strong completeness.
Elles sont equivalentes - on peut construir une forte a partir d’une faible.
Task1: repeat forever
{p queries its local failure detector module Dp}
suspects_p <- Dp
send(p, suspects_p) to all
Task2: when receive (q, suspects_q) from some q
output_p <- (output_p U suspects_q) - {q}
forte
aucun processus correct n’est suspectefaible
il existe au moins un processus correct qui n’est jamais suspectefinalement forte
il existe un instant a partir duquel tout processus correct n’est plus suspecte par aucun processus correctfinalement faible
il existe un instant a partir duquel au moins un processus correct n’est suspecte par aucun processus correctNote that “strong” and “weak” mean different things for accuracy vs completeness: for accuracy, we are quantifying over suspects, and for completeness, we are quantifying over suspectors. Even a weakly-accurate failure detector guarantees that all processes trust the one visibly good process.
Hypotheses plus facilement utilisables
Completude (Completeness)
: un processus defaillant doit etre detecte comme defaillant
Justesse (Accuracy)
: un processus correct ne doit pas etre considere comme defaillant
Justesse | Forte | Faible | Finalement force | Finalement faible |
---|---|---|---|---|
Completude forte | P | S | ♦P | ♦S |
Completude faible | Q | W | ♦Q | ♦W |
- P→ An innocent is never suspected
- <>P→ In the end every innocent will be not guilty
- S → At least one innocent is never suspected
- <>S → In the end at least one innocent is never suspected
- D’où <>S == Omega parce que
- Omega→ Gives you one innocent (who you choose as leader cause you know he is innocent and you can trust him)
Completude faible
et forte
sont equivalentes (on peut construite une completude forte a partir d’une faible)
Force des detecteurs:
P ---> ♦ P
| |
v v
S ---> ♦ S
Implementations reposant sur des temporisateurs : partiellement synchrones.
Bertier et al
(a terme, plus d’erreur)
GST
(Global Stabilization Time), ou il y a une brone inconnue sur les delais de transmission et de traitement des messages
GST
) ou on ne fera plus d’erreur (le temporisateur a atteint la borne inconnue)(a terme plus d’erreur sur 1 processus)
Hypothese reduite a un ensemble de canaux ultimement synchrones.
♦-timely link
est un canal ultimement synchrone
♦-j-source
au moins j
liens sortant sont ultimement ponctuels
Ω peut etre implemente si y a au moins une ♦-j-source
correcte (j
etant nombre de defaillants)
Propose une liste de processus corrects
Intersection
il y a toujours une intersection non vide dans les listes proposesCompletude ultime
ultimement, il n’y a pas de processus fautif dans les listes(Ω, ∑)
le plus faible detecteur pour realiser le consensus avec n-1
fautes
Problems | Consensus | k-set agreement | set agreement | Eventual Consistency |
---|---|---|---|---|
Shared memory | Ω [LH94] | k-anti-Ω [GK09] | anti-Ω [Z10] | None |
Message passing | (Ω, ∑) | None | L [DFGT08] | Ω [DKGPS15] |
id leader = id ronde % N
id node != id round %N
) attendent:
N
rounds tous les processus ont decide (tous ont ete leader)f
nombre max de fautes tolereesP_i
maintient un vecteur V_i
pour stocker les valeurs proposeesf+1
rounds:
P_i
diffuse V_i
de facon incrementalef+1
rounds
P_i
choisit et decide la premiere valeur non vide de son vecteurf < n/2
crashes1, 2, ..., n
rondes async
r
’s coordinator = proc(r mod n) +1
c
:
v
v
est choisie si c
n’est pas suspectePhase1
: timestamp the current value with the last round’s time, and sent it to coordinatorPhase2
: Coord awaits majority of values
PropVal
= one val from the newest onesPropVal
Phase3
: For each correct proc
PropVal
: send back ACK, update local valuenack
Phase4
:
ack
or nack
), updates local valueack
WLL07-PDC
GCG01-PODC
BMS03-DSN
BBGHRS16
(Supercomputing)George Bosilca [1]
Aurélien Bouteiller [1]
Amina Guermouche [1]
Thomas Hérault [1]
Yves Robert [1,2]
Pierre Sens [3]
Jack Dongarra [1,4]
University Tennessee Knoxville - 1
ENS Lyon, France - 2
LIP6, Inria Paris, France - 3
University of Manchester, UK - 4
SC’16 – November, 2016
f <= log(n)-1
, f
being the number of falures, n
the number of live processes