Specification, implementation and application of randomized regular registers (brief announcement)

This paper presents a definition of a randomized regular register, shows that the definition is implemented by the probabilistic quorum algorithm of [3], and shows how to program with such registers using the framework of [4]. Consequently, existing iterative algorithms for a large class of problems (including solving systems of linear equations, finding shortest paths, etc.) will converge with high probability if executed in a system in which the shared data is implemented with registers satisfying the new condition. A modified definition is presented and its expected time for convergence is calculated and compared experimentally with that for the original definition. We define a random regular register to satisfy: every operation invocation has a matching response; every read reads from a write that starts before the read ends; and for every finite execution that ends in a write invocation, the probability that this write <italic>W</italic> is read from infinitely often is 0, if an infinite number of writes are performed in the extension. We show in [1] that the probabilistic quorum algorithm of [2, 3] implements a random regular register, by showing that the probability that at least one replica from <italic>W</italic>'s quorum survives ℓ subsequent writes is at most <italic>k</italic>(<italic>n</italic>-<italic>k</italic>/<italic>n</italic>)<supscrpt>ℓ</supscrpt>, where <italic>n</italic> is the number of processes and <italic>k</italic> is the quorum size. The class of algorithms considered in [4] are those in which a function is applied repeatedly to a vector to produce another vector. In typical applications, each vector component may be computed by a separate process, based on that process' current best estimate of the values of all the vector components — estimates which might be out of date. Üresin and Dubois show that if the function satisfies certain properties and if the outdatedness of the vector component estimates is not too extreme, then this iterative procedure will eventually converge to the fixed point of the function, in increments called pseudocycles. Functions satisfying the desired properties are called asynchronously contracting operators (ACOs). In [1] we prove: <italic>If</italic> F <italic>is an ACO, then in every execution using random regular registers, the computed vector eventually converges to the fixed point of</italic> F <italic>with probability 1</italic>. Our second definition requires the register to be monotone, meaning that if a read reads from a certain write, then no subsequent read by the same process reads from an earlier write. Additionally, let <italic>Y</italic> be a random variable whose value is the number of reads by a process after a write <italic>W</italic> until <italic>W</italic> or a later write is read from by that process. Then there must exist <italic>p</italic>, 0 < <italic>p</italic> ≤ 1, such that for all <italic>r</italic> ≥ 1, Pr(<italic>Y</italic> = <italic>r</italic>) ≤ (1 - <italic>p</italic>)<supscrpt><italic>r</italic> - 1</supscrpt> · <italic>p</italic>. In [1] we define a round to be a minimal length (contiguous) subsequence of an execution in which each process performs <italic>at least one</italic> update of its vector components, and we prove the following: <italic>In every execution using monotone random regular registers with constant p, the expected number of rounds per pseudocycle is at most</italic> 1/<italic>p</italic>. Thus the expected number of rounds for an ACO requiring M pseudocycles for convergence is at most <italic>M/p</italic>. In [1] we prove that a simple modification to the probabilistic quorum algorithm for <italic>n</italic> processes with quorum size <italic>k</italic> implements a monotone random regular register with <italic>p</italic> = 1 - (<italic>n</italic>-<italic>k</italic> <italic>k</italic>)/(<italic>n</italic> <italic>k</italic>). This implies that the expected number of rounds per pseudocycle is at most 1/1-(<italic>n</italic> - <italic>k</italic>/<italic>n</italic>)<supscrpt><italic>k</italic></supscrpt>.