Efficient synchronous snapshots

  • Authors:
  • Alex Brodsky;Faith Ellen Fich

  • Affiliations:
  • University of Toronto, Toronto, Canada;University of Toronto, Toronto, Canada

  • Venue:
  • Proceedings of the twenty-third annual ACM symposium on Principles of distributed computing
  • Year:
  • 2004

Quantified Score

Hi-index 0.00

Visualization

Abstract

A snapshot is an important object in distributed computing whose implementation in asynchronous systems has been studied extensively. It consists of a collection of m 1 components, each storing a value, and supports two atomic operations: an UPDATE of a specified component's value and a SCAN of all components to determine their values at some point in time.In this paper, we investigate implementations of a multiwriter snapshot object in a synchronous shared memory model. In this setting, we show that a snapshot object can be efficiently implemented and prove a tight tradeoff between the complexity of the SCAN and the UPDATE operations. First, we describe a wait-free implementation that performs UPDATE in O(1) time and SCAN in O(m) time, using only slightly more than twice the amount of space needed to simply store the m values. We also describe a variant that performs UPDATE in O(1) time and SCAN in O(n) time.Second, we describe a wait-free implementation that performs UPDATE in O(log m) time and SCAN in O(1) time, and a variant that performs UPDATE in O(log n) time and SCAN in O(1) time.Third, we show how to combine these implementations to realize two implementations that perform UPDATE in Θ(log(m/c)) time and SCAN in Θ(c) time, for 1≤c≤m, or perform UPDATE in Θ(log(n/c)) time and SCAN in Θ(c) time, for 1≤c≤n. This implies that Time[UPDATE] ∈O(log(minm,n/Time[SCAN])). We also prove that Time[UPDATE] ∈ Ω(log(minm,n/Time[SCAN]) ), which matches our upper bound.