3 research outputs found
Efficient Timestamps for Capturing Causality
Consider an asynchronous system consisting of processes that communicate via
message-passing. The processes communicate over a potentially {\em incomplete}
communication network consisting of reliable bidirectional communication
channels. Thus, not every pair of processes is necessarily able to communicate
with each other directly. % For instance, when the communication network is a
{\em star} graph, there is a {\em central} process % that can communicate with
all the remaining processes (which are called {\em radial} processes), % but
the radial processes cannot communicate with each other directly.
The goal of the algorithms discussed in this paper is to assign timestamps to
the events at all the processes such that (a) distinct events are assigned
distinct timestamps, and (b) the happened-before relationship between the
events can be inferred from the timestamps. We consider three types of
algorithms for assigning timestamps to events: (i) Online algorithms that must
(greedily) assign a timestamp to each event when the event occurs. (ii) Offline
algorithms that assign timestamps to event after a finite execution is
complete. (iii) Inline algorithms that assign a timestamp to each event when it
occurs, but may modify some elements of a timestamp again at a later time.
For specific classes of graphs, particularly {\em star} graphs and graphs
with connectivity , the paper presents bounds on the length of vector
timestamps assigned by an {\em online} algorithm. The paper then presents an
{\em inline} algorithm, which typically assigns substantially smaller
timestamps than the optimal-length {\em online} vector timestamps. In
particular, the inline algorithm assigns timestamp in the form of a tuple
containing integer elements, where is the size of the vertex cover
for the underlying communication graph
Timestamping Messages in Synchronous Computations
computations is a fundamental problem with applications in distributed monitoring systems and faulttolerance. Fidge and Mattern's vector clocks capture the order relationship with vectors of size N in a system with N processes. Since many distributed applications use synchronous messages, it is natural to ask if the overhead can be reduced for these applications. In this paper, we present a new method of timestamping messages and events in synchronous computations that capture the order relationship with vectors of size less than or equal to the size of the vertex cover of the communication topology of the system. Our method is fundamentally different from that of Fidge and Mattern's technique. The timestamps in our method do not use one component per process but still guarantee that the order relationship is captured accurately. Our algorithm is online and only requires piggybacking of timestamps on program messages. It is applicable to all programs that either use programming languages which use synchronous communication such as CSP, or use synchronous remote procedure calls
Timestamping Messages in Synchronous Computations
Abstract Determining order relationship between events in dis-tributed computations is a fundamental problem with applications in distributed monitoring systems and fault-tolerance. Fidge and Mattern's vector clocks capture the order relationship with vectors of size N in a system with N processes. Since many distributed applications use syn-chronous messages, it is natural to ask if the overhead can be reduced for these applications. In this paper, we presenta new method of timestamping messages and events in synchronous computations that capture the order relationshipwith vectors of size less than or equal to the size of the vertex cover of the communication topology of the system. Ourmethod is fundamentally different from that of Fidge and Mattern's technique. The timestamps in our method do notuse one component per process but still guarantee that the order relationship is captured accurately. Our algorithmis online and only requires piggybacking of timestamps on program messages. It is applicable to all programs that ei-ther use programming languages which use synchronous communication such as CSP, or use synchronous remoteprocedure calls. 1