  In this work, we focus on the problem of replay clocks (RepCL). The need for
replay clocks arises from the observation that analyzing distributed
computation for all desired properties of interest may not be feasible in an
online environment. These properties can be analyzed by replaying the
computation. However, to be beneficial, such replay must account for all the
uncertainty that is possible in a distributed computation. Specifically, if
event 'e' must occur before 'f' then the replay clock must ensure that 'e' is
replayed before 'f'. On the other hand, if 'e' and 'f' could occur in any order
then replay should not force an order between them.
  After identifying the limitations of existing clocks to provide the replay
primitive, we present RepCL and identify an efficient representation for the
same. We demonstrate that RepCL can be implemented with less than four integers
for 64 processes for various system parameters if clocks are synchronized
within 1 ms. Furthermore, the overhead of RepCL (for computing/comparing
timestamps and message size) is proportional to the size of the clock. Using
simulations, we identify the expected overhead of RepCL based on the given
system settings. We also identify how a user can the identify feasibility
region for RepCL. Specifically, given the desired overhead of RepCL, it
identifies the region where unabridged replay is possible.
