From a Store-collect Object and Ω to Efficient Asynchronous Consensus
Abstract
This paper presents an efficient algorithm that builds a consensus object. This algorithm is based on an $\Omega$ failure detector (to obtain consensus liveness) and a store-collect object (to maintain its safety). A store-collect object provides the processes with two operations, a store operation which allows the invoking process to deposit a new value while discarding the previous value it has deposited and a collect operation that returns to the invoking process a set of pairs $(i, val)$ where $val$ is the last value deposited by the process $p_i$. A store-collect object has no sequential specification. While store-collect objects have been used as base objects to design wait-free constructions of more sophisticated objects (such as snapshot or renaming objects), as far as we know, they have not been explicitly used to built consensus objects. The proposed store-collect-based algorithm, which is round-based, has several noteworthy features. First it uses a single store-collect object (and not an object per round). Second, during a round, a process invokes at most once the store operation and the value $val$ it deposits is a simple pair $\langle r, v \rangle$ where $r$ is a round number and $v$ a proposed value. Third, a process is directed to skip rounds according to its view of the current global state (thereby saving useless computation rounds). Finally, the algorithm benefits from the adaptive wait-free implementations that have been proposed for store-collect objects, namely, the number of shared memory accesses involved in a collect operation is $O(k)$ where $k$ is the number of processes that have invoked the store operation. This makes the proposed algorithm particularly efficient and interesting for multiprocess programs made up of asynchronous crash-prone processes that run on top of multicore architectures.
Cet article présente un algorithme efficace qui implémente un objet consensus sans attente (\emph{wait-free}). Cet algorithme s'appuie sur un détecteur de fautes $\Omega$ pour garantir la vivacité du consensus et sur un objet \emph{store-collect} qui en assure la sûreté. Cette approche permet de bénéficier des implémentations adaptatives existantes de l'objet \emph{store-collect}, ce qui fait de l'algorithme proposé une alternative intéressante pour résoudre le problème du consensus dans les systèmes asynchrones sujets aux défaillances construits sur des architectures multiprocesseur.
Origin : Files produced by the author(s)
Loading...