Implementing Snapshot Objects on Top of Crash-Prone Asynchronous Message-Passing Systems

In asynchronous crash-prone read/write shared-memory systems there is the notion of a <italic>snapshot object, </italic> which simulates the behavior of an array of single-writer/multi-reader (SWMR) shared registers that can be read atomically. Processes in the system can access the object invoking (any number of times) two operations, denoted <inline-formula><tex-math notation="LaTeX">$\mathsf {write}()$</tex-math><alternatives> <inline-graphic xlink:href="rajsbaum-ieq1-2809551.gif"/></alternatives></inline-formula> and <inline-formula> <tex-math notation="LaTeX">$\mathsf {snapshot}()$</tex-math><alternatives> <inline-graphic xlink:href="rajsbaum-ieq2-2809551.gif"/></alternatives></inline-formula>. A process invokes <inline-formula><tex-math notation="LaTeX">$\mathsf {write}()$</tex-math><alternatives> <inline-graphic xlink:href="rajsbaum-ieq3-2809551.gif"/></alternatives></inline-formula> to update the value of its register in the array. When it invokes <inline-formula><tex-math notation="LaTeX">$\mathsf {snapshot}()$</tex-math> <alternatives><inline-graphic xlink:href="rajsbaum-ieq4-2809551.gif"/></alternatives></inline-formula>, the process obtains the values of all registers, as if it read them simultaneously. It is known that a snapshot object can be implemented on top of SWMR registers, tolerating any number of process failures. Snapshot objects provide a level of abstraction higher than individual SWMR registers, and they simplify the design of applications. Building a snapshot object on an asynchronous crash-prone message-passing system has similar benefits. The object can be implemented by using the known simulations of a SWMR shared memory on top of an asynchronous message-passing system (if less than half the processes can crash), and then build a snapshot object on top of the simulated SWMR memory. This paper presents an algorithm that implements a snapshot object directly on top of the message-passing system, without building an intermediate layer of a SWMR shared memory. To the authors knowledge, the proposed algorithm is the first providing such a direct construction. The algorithm is more efficient than the indirect solution, yet relatively simple.

[1]  Michel Raynal,et al.  Distributed Algorithms for Message-Passing Systems , 2013, Springer Berlin Heidelberg.

[2]  Maurice Herlihy,et al.  Wait-free synchronization , 1991, TOPL.

[3]  Sergio Rajsbaum,et al.  Analysis of Distributed Algorithms based on Recurrence Relations (Preliminary Version) , 1991, WDAG.

[4]  Ten-Hwang Lai,et al.  On Distributed Snapshots , 1987, Inf. Process. Lett..

[5]  Mark Moir,et al.  Obstruction-Free Algorithms Can Be Practically Wait-Free , 2005, DISC.

[6]  Yves Métivier,et al.  On Snapshots and Stable Properties Detection in Anonymous Fully Distributed Systems (Extended Abstract) , 2012, SIROCCO.

[7]  Hagit Attiya Efficient and Robust Sharing of Memory in Message-Passing Systems , 2000, J. Algorithms.

[8]  Michel Raynal Basic Definitions and Network Traversal Algorithms , 2013 .

[9]  Rachid Guerraoui,et al.  Partial snapshot objects , 2008, SPAA '08.

[10]  Lukas Furst Concurrent Programming Algorithms Principles And Foundations , 2016 .

[11]  Nicolas C. Nicolaou,et al.  Oh-RAM! One and a Half Round Atomic Memory , 2017, NETYS.

[12]  Ajay D. Kshemkalyani,et al.  Efficient distributed snapshots in an anonymous asynchronous message-passing system , 2013, J. Parallel Distributed Comput..

[13]  Murel H. Folk Help , 1967 .

[14]  Michel Raynal,et al.  Help When Needed, But No More: Efficient Read/Write Partial Snapshot , 2009, DISC.

[15]  Keith Marzullo,et al.  Consistent detection of global predicates , 1991, PADD '91.

[16]  Idit Keidar,et al.  Open Questions on Consensus Performance in Well-Behaved Runs , 2003, Future Directions in Distributed Computing.

[17]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[18]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[19]  Marko Vukolic,et al.  Fast Access to Distributed Atomic Memory , 2010, SIAM J. Comput..

[20]  Michel Raynal,et al.  Communication and Agreement Abstractions for Fault-Tolerant Asynchronous Distributed Systems , 2010, Synthesis Lectures on Distributed Computing Theory.

[21]  Achour Mostéfaoui,et al.  Two-Bit Messages are Sufficient to Implement Atomic Read/Write Registers in Crash-prone Systems , 2016, PODC.

[22]  James H. Anderson,et al.  Multi-writer composite registers , 1994, Distributed Computing.

[23]  Eric Ruppert Implementing Shared Registers in Asynchronous Message-Passing Systems , 2008, Encyclopedia of Algorithms.

[24]  Nir Shavit,et al.  Atomic snapshots of shared memory , 1990, JACM.

[25]  Leslie Lamport,et al.  On interprocess communication , 1986, Distributed Computing.

[26]  Leslie Lamport,et al.  A fast mutual exclusion algorithm , 1987, TOCS.

[27]  Carole Delporte-Gallet,et al.  Implementing Snapshot Objects on Top of Crash-Prone Asynchronous Message-Passing Systems , 2018, IEEE Trans. Parallel Distributed Syst..

[28]  Faith Ellen,et al.  Limited-Use Atomic Snapshots with Polylogarithmic Step Complexity , 2015, J. ACM.

[29]  Leslie Lamport,et al.  Distributed snapshots: determining global states of distributed systems , 1985, TOCS.

[30]  Achour Mostéfaoui,et al.  Communication-Induced Determination of Consistent Snapshots , 1999, IEEE Trans. Parallel Distributed Syst..

[31]  Michel Raynal,et al.  Distributed Universal Constructions: a Guided Tour , 2017, Bull. EATCS.

[32]  Wei Chen,et al.  Linear-Time Snapshot Using Multi-writer Multi-reader Registers , 1994, WDAG.

[33]  Hagit Attiya Robust Simulation of Shared Memory: 20 Years After , 2010, Bull. EATCS.

[34]  Michel Raynal,et al.  Specifying Concurrent Problems: Beyond Linearizability and up to Tasks - (Extended Abstract) , 2015, DISC.