Title: Chapter 9 Global Snapshot
1Chapter 9Global Snapshot
2Global state
- Global state
- A set of local states that are concurrent with
each other - Concurrent states no two states have a happened
before relation with each other
3The mystery of the missing dollars
Send 100
B
A
300
400
- Picture taken at A - 400
- A sends 100 to B
- Picture taken at B - 400
- Total is 800
4Global Snapshot Problem
- Determine the global system state (e.g. the total
money ) - Each process records its own state
- No shared clock/memory
- Group of photographers taking snaps of different
portions and trying to combine to get the overall
picture.
5Consistent cut
- Given computation (E,!) and F µ E is a cut iff
- F is a consistent cut (global snapshot) iff
6Consistent and inconsistent cuts
7Chandy and Lamport's Algorithm
- Assumes
- FIFO and
- Unidirectional channels
- A bidirectional channel is modelled as two
unidirectional channels
8Chandy and Lamport's Algorithm
- Each process has an associated color. All
processes are initially white. - A process records it local state just before
turning red - On turning red the process sends out a marker on
all outgoing channels - On receiving a marker a white process turns red
9Classification of messages
- w white process
- r red process
- E.g.. rw sent by a red process, received by a
white process
10Algorithm
public class RecvCamera extends Process
implements Camera . . . public
RecvCamera(Linker initComm, CamUser app)
. . . for (int i 0 i lt N i)
if (isNeighbor(i))
closedi false chani new
LinkedList() else closedi
true public synchronized void
globalState() myColor red
app.localState() // record local State
sendToNeighbors("marker", myId) // send
Markers public synchronized void
handleMsg(Msg m, int src, String tag)
if (tag.equals("marker")) if
(myColor white) globalState()
closedsrc true if (isDone())
----- Display channel state
(transit messages) chan ----
else // application message
if ((myColor red)
(!closedsrc))
chansrc.add(m) app.handleMsg(m,
src, tag) // give it to app
boolean isDone() if (myColor white)
return false for (int i 0 i lt N
i) if (!closedi) return false
return true
11Non FIFO channels
- Include color in all outgoing messages
- Each process counts the number of white messages
received by it - Marker from i to j includes number of white
messages sent by i to j
12Applications
- Checkpointing
- Provide fault tolerance in distributed systems
- Distributed debugging
-
13Applications
- Stable predicate B Once B becomes true it
remains true, i.e. B is stable iff - Stable predicate detection
- Property of a global snapshot S
- If Si is the initial global state, Sf is the
final global state - B(S) ) B(Sf)
- B(S) ) B(Si)
- Take repeated snapshots