• Nenhum resultado encontrado

Checkpoints Globais Consistentes

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.

Documentos relacionados