16
0

Efficient Partial Snapshot Implementations

Abstract

In this work, we propose the λ\lambda-scanner snapshot, a variation of the snapshot object, which supports any fixed amount of 0<λn0 < \lambda \leq n different SCANSCAN operations being active at any given time. Whenever λ\lambda is equal to the number of processes nn in the system, the λ\lambda-scanner object implements a multi-scanner object, while in case that λ\lambda is equal to 11, the λ\lambda-scanner object implements a single-scanner object. We present the λSnap\lambda-Snap snapshot object, a wait-free λ\lambda-scanner snapshot implementation that has a step complexity of O(λ)O(\lambda) for UPDATEUPDATE operations and O(λm)O(\lambda m) for SCANSCAN operations. The space complexity of λSnap\lambda-Snap is O(λm)O(\lambda m). λSnap\lambda-Snap provides a trade-off between the step/space complexity and the maximum number of SCANSCAN operations that the system can afford to be active on any given point in time. The low space complexity that our implementations provide makes them more appealing in real system applications. Moreover, we provide a slightly modified version of the λSnap\lambda-Snap implementation, which is called partial λSnap\lambda-Snap, that is able to support dynamic partial scan operations. In such an object, processes can execute modified SCANSCAN operations called PARTIAL_SCANPARTIAL\_SCAN that could obtain a part of the snapshot object avoiding to read the whole set of components. In this work, we first provide a simple single-scanner version of λSnap\lambda-Snap, which is called 1Snap1-Snap. We provide 1Snap1-Snap just for presentation purposes, since it is simpler than λSnap\lambda-Snap. The UPDATEUPDATE in 1Snap1-Snap has a step complexity of O(1)O(1), while the SCANSCAN has a step complexity of O(m)O(m). This implementation uses O(m)O(m) CASCAS registers.

View on arXiv
Comments on this paper