English

Recoverable Consensus in Shared Memory

Distributed, Parallel, and Cluster Computing 2018-05-11 v2

Abstract

Herlihy's consensus hierarchy ranks the power of various synchronization primitives for solving consensus in a model where asynchronous processes communicate through shared memory and fail by halting. This paper revisits the consensus hierarchy in a model with crash-recovery failures, where the specification of consensus, called \emph{recoverable consensus} in this paper, is weakened by allowing non-terminating executions when a process fails infinitely often. Two variations of this model are considered: independent failures, and simultaneous (i.e., system-wide) failures. Several results are proved in this model: (i) We prove that any primitive at level two of Herlihy's hierarchy remains at level two if simultaneous crash-recovery failures are introduced. This is accomplished by transforming (one instance of) any 2-process conventional consensus algorithm to a 2-process recoverable consensus algorithm. (ii) For any n>1n > 1 and f>0f > 0, we show how to use f+1f+1 instances of any conventional nn-process consensus algorithm and Θ(f+n)\Theta(f + n) read/write registers to solve nn-process recoverable consensus when crash-recovery failures are independent, assuming that every execution contains at most ff such failures. (iii) Next, we prove for any f>0f > 0 that any 2-process recoverable consensus algorithm that uses TAS and read/writer registers requires at least f+1f+1 TAS objects, assuming that crash-recovery failures are independent and every execution contains at most ff such failures. (iv) Lastly, we generalize and strengthen (iii) by proving that any universal construction of nn-process recoverable consensus from a type TT with consensus number nn and read/write registers requires at least f+1f+1 base objects of type TT in executions with up to ff failures.

Keywords

Cite

@article{arxiv.1804.10597,
  title  = {Recoverable Consensus in Shared Memory},
  author = {Wojciech Golab},
  journal= {arXiv preprint arXiv:1804.10597},
  year   = {2018}
}