optimal termination detection for rings murat demirbas osu
TRANSCRIPT
Termination Detection in D.S. Message passing, Asynchronous execution A process is either active or passive Active processes:
– send and receive messages, – can become passive spontaneously
Passive processes: – can only receive messages, – can become active only by receiving a
message.
Termination detection problem
The system is terminated iff – all processes are passive– no messages in transit
The problem is to detect termination as and when the system terminated.
Related work
Chandy & Lamport snapshot alg.– O(N2) time
Dijkstra & Safra token-based alg.– O(N) time, 2N -- 3N
Chandy alg.– 2N integers per process, and message– 2N2 integers at the detector– Sivilotti improved the space complexity
Our algorithm
Based on Dijkstra&Safra alg. Detection in 0 -- N time each process maintains 1 int. + N bits token stores N int. + N bits
Dijkstra & Safra algorithm
c.j = #mesgs sent - #mesgs received The initiator obtains a snapshot
– sends a token to the ring– gathers the sums of c.j’s
If the snapshot is consistent and no mesg in transit, termination is detected.
Dijkstra & Safra alg (cont.)
Snapshot is inconsistent if the receipt of m is recorded but send of m is not.
A process is blackened upon receiving a mesg
A black node blackens the token
N
1
2
3
An optimal algorithm for Termination Detection on Rings First enhancement (Enumeration bits) Second enhancement (Multiple
initiators) Optimal algorithm = 1st & 2nd enh.
combined
1st enhancement (enumeration bits) Dijkstra & Safra blackens every process
that receives a message. However, a message reception violates
the snapshot iff the receive of the message is included in the snapshot whereas the send is not.
1st enhancement (enumeration bits) The messages that violate the
consistency are those sent by a process in the visited region to another process in the unvisited region.
A process sending a mesg piggybacks its enumeration bit + its process id.
j upon receiving “m” blackens itself iff:– enum.j enum.m– j > sender_id.m
2nd Enhancement (Multiple initiators)
D&S alg has a fixed initiator: N A vector [q1,q2,…,qN] maintains the
sum, q, w.r.t. multiple initiators. N -- 2N time to detect termination
4
2
3
5
[0,0,0,0,0]
[q1,0,0,0,0]
[B,0,B,B,B]
[B,q2,0,B,B]
[B,q2,q3,0,B]
[B,q2,q3,q4,0][0,q2,q3,q4,q5]
1
The Optimal Algorithm 2nd enh. blackens j::q.j and requires 2N. 0--N if we do not blacken any q at 2, and q2, q3 at 4.
1
2
3
4
[q1,q2,q3,q4]
m2
m1
The Optimal Algorithm(cont.)
We merge 1st & 2nd enh.– enum.j, enum.m, sender_id.m (1st enh.)– [q1,q2,…,qN], tok_color.[1…N] (2nd enh.)– color.j.k
color.j.k: j’s color w.r.t. initiator k propagate and retransmit actions are
merged into one action
The Optimal Algorithm(cont.)
j receives m from l;– enum.j enum.m and j > sender_id.m– m violates the consistency of the snapshot
k::j k N 1 k l k:jkN 1kl: color.j.k := black
Proof W detects X:
– W X– X leads-to W
Proof:– X: termination predicate– W: witness predicate– I: invariant– (I W) X– (I X) leads-to W
Proof (cont) X= ( (j:: idle.j)(#mesg_sent - #mesg_rcvd
=0) ) W= (j:: (tok@j) (idle.j) (color.j.j=white)
(c.j+q.j=0) (tok_color.j=white) )
I= ( (j::c.j) = #mesg_sent - #mesg_rcvd (I1)
(i:: Q.i R.i S.i T.i) ) Q.i= ( (j:jVSTD.i: idle.j) q.i= (j:jVSTD.i:c.j) ) R.i= ( q.i+(j:jVSTD.i:c.j) > 0 ) S.i= (j: jVSTD.i : color.j.i=black ) T.i= (tok_color.i=black )
Proof: (IW) X
Token is at j W (1)tok@j (2)idle.j (3)color.j.j=white
(4)c.j+q.j=0 (5)tok_color.j=white
(1 3) S.j (1 4) R.j 5 T.j (I S.j R.j T.j) Q.j
(1 2 Q.j 4 I1) X
Proof: (IX) leads-toW in 0--N
(I X) (j:: idle.j) (j::c.j) = 0 The only enabled action is Propagate Token Let tok@j; then q.j=0, color.j.j=white,
tok_color.j=white Claim: (k:: color.k.j = white) Then; tok_color.j=white is stable. When tok@j again, (c.j+q.j = (j::c.j) = 0 ) Therefore, within 1 cycle of token W is satisfied. 0--N
Proof: (k:: color.k.j = white) Assume (k:: color.k.j = black). 3 cases to
consider:– k<j :
• color.k.j = black before token visits k leads-to color.k.j = white
• color.k.j cannot be blackened by 1 i k, since enum.i=enum.k
• color.k.j cannot be blackened by k i.
– k=j : color.j.j=white– k>j :
• sender_id j then color.k.j is not blackened• sender_id > j then color.k.j is not blackened, since
enum.sender_id =enum.k