Chapter 9 Global Snapshot
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
The mystery of the missing dollars A B $400 $ Picture taken at A - $ A sends $100 to B 3. Picture taken at B - $ Total is $800 Send $100
Global 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.
Consistent cut Given computation (E,!) and F µ E is a cut iff F is a consistent cut (global snapshot) iff
Consistent and inconsistent cuts
Chandy and Lamport's Algorithm Assumes FIFO and Unidirectional channels A bidirectional channel is modelled as two unidirectional channels
Chandy 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
Classification of messages w – white process r – red process E.g.. rw – sent by a red process, received by a white process
Algorithm public class RecvCamera extends Process implements Camera {... public RecvCamera(Linker initComm, CamUser app) {... for (int i = 0; i < N; i++) if (isNeighbor(i)) { closed[i] = false; chan[i] = new LinkedList(); } else closed[i] = 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(); closed[src] = true; if (isDone()){ Display channel state (transit messages) chan[] ---- } } else { // application message if ((myColor == red) && (!closed[src])) chan[src].add(m); app.handleMsg(m, src, tag); // give it to app } boolean isDone() { if (myColor == white) return false; for (int i = 0; i < N; i++) if (!closed[i]) return false; return true; }
Non 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
Applications Checkpointing Provide fault tolerance in distributed systems Distributed debugging
Applications 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 S i is the initial global state, S f is the final global state B(S * ) ) B(S f ) B(S * ) ) B(S i ) Take repeated snapshots