| OCR Text |
Show 76 3.2.2.3 Distributed. When an applicative program is running, concurrent tasks recursively generate child tasks. Implicit checkpointing happens at various locations of the network asynchronously. Functional checkpointing is a fully distributed error logging mechanism. 3.3 Rollback recov!!Y Using functional checkpointing as a framework, a simple rollback recovery mechanism can be devised. An applicative call tree is mapped onto a set of processors. Each processor may have an arbitrary number of tasks. When a processor fails. the call tree may be broken into pieces. However, only the piece that contains the root task is always capable of regenerating all severed pieces. Suppose that an applicative program has been spawned into the call tree as shown in Figure 22. For ease of discussion. tasks A 1 and A2 are mapped onto processor A. Tasks Bi are executed in processor B, etc. If processor B fails at this moment, tasks Bi are destroyed. The call tree is partitioned into three pieces: {A 1 ,C 1 ,C2,C3,03}, {A2,D 1 .D2,C4 }, and {04,05,A5 }. Processor A contains the functional checkpoint for 81, processor C contains checkpoints for 82, 83 and 85, and processor D contains checkpoints for 87. To recover from the failure of 8, the system needs to command processor A to respawn 81, processor C to ~regenerate 82 and 83. Task 82 will in turn generate new tasks which are equivalent to 04 and A2. Since an applicative program is determinate. it does not require any undo operation, and hence no domino effect [49].· Note that task C4 holds the checkpointing data for 85. Processor C may regenerate 85 when 8 fails. However, the recovery ~f 85 is not fruitful because antecedent task A2 cannot report its result to 82. Reactivation of 85 only increases the system overhead. Therefore. an efficient way to salvage a group of genealogical dependents is to redo the most ancient ancestor and ignore the rest. |