2.3 Checkpointing
2.3.3 Checkpoints Globais Consistentes
Se tomarmos um checkpoint de cada processo diferente, formaremos um conjunto de estados dos processos que representam um estado global da computa¸c˜ao, chamado de checkpoint global. No entanto, assim como ocorre com cortes da computa¸c˜ao distribu´ıda, nem todo checkpoint global representa um estado consistente da computa¸c˜ao. Quando dois checkpoints est˜ao relacionados causalmente, eles n˜ao podem formar um checkpoint global que represente um estado consistente da computa¸c˜ao distribu´ıda. Portanto, um checkpoint global ser´a consistente quando incluir um checkpoint de cada processo da aplica¸c˜ao de forma a n˜ao existirem dois checkpoints cα
a e c β
b tais que cαa → c β
b. Na Figura 2.7, {v0, s11, s12} ´e um checkpoint
global consistente enquanto que {s0
0, s11, s12} ´e inconsistente, uma vez que o corte definido pelo
checkpoint global inclui o evento entrega(m1) sem incluir o evento envio(m1).
Teorema 2.1 Um checkpoint global C representa um estado consistente da computa¸c˜ao distribu´ıda se, e somente se,
∀cα a, c β b ∈ C : c α a 6→ c β b
Prova: Suficiˆencia(⇐): Seja C um checkpoint global tal que ∀cα a, c
β
b ∈ C : cαa 6→ c β b.
Suponha, por contradi¸c˜ao, que o corte C, definido por C, ´e inconsistente. Pela Defini¸c˜ao 2.2, temos que existem dois eventos e ∈ C, e0 6∈ C tais que e0 → e. Chamemos cα
a o checkpoint em
C referente ao processo do evento e0 e cβ
b o checkpoint em C referente ao processo do evento
e. Como e0 n˜ao pertence ao corte definido por C, temos que cα
a → e0. De forma an´aloga,
como e pertence ao corte, ou e = cβb, ou e → cβb. Em ambos os casos, pela defini¸c˜ao de precedˆencia causal, temos que cα
a → c
β
b, o que contradiz nossa considera¸c˜ao inicial.
Necessidade(⇒): Seja C um checkpoint global consistente. Suponha, por contradi¸c˜ao, que existam dois checkpoints cα
a e c β
b em C tais que cαa → c β
b. Como a 6= b, existe uma mensagem
m cujo evento de envio ocorre no processo paap´os a grava¸c˜ao do checkpoint cαa e cuja entrega
precede causalmente a grava¸c˜ao do checkpoint cβb, ou seja, cαa → envio(m) → entrega(m) → c
β b.
Sendo assim, um checkpoint global incluindo cα a e c
β
b n˜ao seria consistente pois o corte repre-
16 Cap´ıtulo 2. Checkpointing e Recupera¸c˜ao
Podemos definir algumas opera¸c˜oes sobre checkpoints globais. Neste contexto, duas opera¸c˜oes importantes s˜ao a sua uni˜ao e interse¸c˜ao. A uni˜ao de dois checkpoints globais ´e dada pelo checkpoint mais recente, em cada processo, que est´a presente em um dos dois checkpoints globais (Figura 2.8). De forma semelhante, a interse¸c˜ao de dois checkpoints globais ´e dada pelo checkpoint menos recente em cada processo (Figura 2.8).
PSfrag replacements p0 p1 p2 C C0 C∩ C0 C∪ C0 m1 m2 m3 m4 m5
Figura 2.8: Uni˜ao e interse¸c˜ao de checkpoints globais.
Defini¸c˜ao 2.4 Uni˜ao de Checkpoints Globais — A uni˜ao de dois checkpoints globais, C e C0 ´e dada por:
C ∪ C0 = n−1 [ i=0 n cmaxi (α,β) | cα i ∈ C ∧ c β i ∈ C 0o
Defini¸c˜ao 2.5 Interse¸c˜ao de Checkpoints Globais — A interse¸c˜ao de dois check- points globais, C e C0 ´e dada por:
C ∩ C0 = n−1 [ i=0 n cmin(α,β)i | cα i ∈ C ∧ c β i ∈ C 0o
Uma propriedade interessante de checkpoints globais consistentes ´e o fechamento com rela¸c˜ao `as opera¸c˜oes de uni˜ao e interse¸c˜ao. A uni˜ao ou a interse¸c˜ao de dois checkpoints globais consistentes resultar´a sempre em outro checkpoint global consistente.
Teorema 2.2 A uni˜ao de dois checkpoints globais consistentes C e C0 ´e um checkpoint
global consistente.
Prova: Suponha, por contradi¸c˜ao, que C ∪ C0 ´e inconsistente. Portanto, devem existir em
C ∪ C0 pelo menos dois checkpoints cα a e c β b tais que c α a → c β
b. Devido a esta dependˆencia
causal, sabemos que esses dois checkpoints n˜ao podem pertencer ao mesmo checkpoint global consistente original (C ou C0). Dessa forma, suponha, sem perda de generalidade, que cα
a ∈ C
e cβb ∈ C0; e seja cι
a a componente do processo pa em C0. Sendo assim, pela Defini¸c˜ao 2.4,
ι ≤ α e cι a → c
β
2.3. Checkpointing 17
Teorema 2.3 A interse¸c˜ao de dois checkpoints globais consistentes C e C0 ´e um checkpoint global consistente.
Prova: Suponha, por contradi¸c˜ao, que C ∩ C0 ´e inconsistente. Portanto, devem existir em C ∩ C0 pelo menos dois checkpoints cα
a e c β
b tais que cαa → c β
b. Devido a esta dependˆencia
causal, sabemos que esses dois checkpoints n˜ao podem pertencer ao mesmo checkpoint global consistente original (C ou C0). Dessa forma, suponha, sem perda de generalidade, que cα
a ∈ C
e cβb ∈ C0; e seja cι
b a componente do processo pb em C. Sendo assim, pela Defini¸c˜ao 2.5,
ι ≥ β e cα
a → cιb, o que contradiz nossa considera¸c˜ao inicial de que C ´e consistente. 2
As dependˆencias entre checkpoints decorrentes das mensagens trocadas pelos processos dificultam a recupera¸c˜ao por retrocesso de estado. Uma vez que um ou mais processos falhem, estas dependˆencias podem for¸car alguns dos processos que n˜ao falharam a retroceder para um checkpoint anterior. Este procedimento ´e comumente chamado de propaga¸c˜ao de retrocesso6.
Para entender como este mecanismo funciona, considere um cen´ario onde um processo p0
envia uma mensagem m para um processo p1 e esta mensagem ´e entregue corretamente. Se
p0 n˜ao gravar nenhum checkpoint ap´os o envio de m e falhar, ele ser´a obrigado a retroceder
a um estado anterior ao envio de m. Neste caso, como consideramos uma execu¸c˜ao n˜ao- determin´ıstica dos processos, n˜ao se tem garantia de que p0 executar´a novamente o evento
de envio de m, o que invalidaria o estado em que se encontra o processo p1. Para resolver este
problema ´e necess´ario que p1 tamb´em retroceda, voltando a um estado anterior `a entrega de
m, mesmo que tenha gravado algum checkpoint ap´os este evento.
Se n˜ao houver nenhuma forma de sincroniza¸c˜ao entre os processos para a sele¸c˜ao de checkpoints, pode-se gerar alguns cen´arios onde a propaga¸c˜ao de retrocesso retrocede a com- puta¸c˜ao para o seu estado inicial mesmo ap´os a grava¸c˜ao de v´arios checkpoints nos diferentes processos, uma anomalia conhecida como efeito domin´o [29]. A Figura 2.9 apresenta um exemplo simples de cen´ario onde este problema ocorre. Inicialmente, o processo p0 sofre
uma falha e tem que ser retrocedido a um checkpoint est´avel, a princ´ıpio s2
0. No entanto, a
mensagem m4 cria uma dependˆencia entre s20 e v1, de forma que p1 tamb´em deve retroceder.
Por´em, a mensagem m3 cria uma dependˆencia entre s11 e s20 de forma que se p1 retroceder
para s1
1, p0 dever´a retroceder para s10. De forma semelhante, a mensagem m2 faz com que
p1 retroceda para s01 e, finalmente, a mensagem m1 for¸ca p0 a retroceder ao checkpoint s00.
Portanto, neste cen´ario, a computa¸c˜ao retrocede ao seu estado inicial de execu¸c˜ao.
O efeito domin´o existe devido a uma outra rela¸c˜ao de dependˆencia entre checkpoints que estende a precedˆencia causal e determina a possibilidade de um checkpoint ou conjunto de checkpoints fazerem parte de algum checkpoint global consistente. As se¸c˜oes seguintes abordam esta rela¸c˜ao em maiores detalhes.
18 Cap´ıtulo 2. Checkpointing e Recupera¸c˜ao PSfrag replacements p0 p1 s00 s10 s20 s01 s11 v1 m1 m2 m3 m4
Figura 2.9: Propaga¸c˜ao de retrocesso e efeito domin´o.