Abstract

Causality tracking among events is a fundamental challenge in distributed environments. Much previous work on this subject has focused on designing an efficient and scalable protocol to represent logical time. Several implementations of logical clocks have been proposed, most recently the Encoded Vector Clock (EVC), a protocol to encode Vector Clocks (VC) in scalar numbers through the use of prime numbers, to improve performance and scalability. We propose and formalize the concept of Resettable Encoded Vector Clock (REVC), a new logical clock implementation, which builds on the EVC to tackle its very high growth rate issue. We show how our REVC can be applied in both shared memory systems and message passing systems to achieve a consistent logical clock. We show, through practical examples, the advantage of REVC's growth rate with respect to EVC's growth rate. Finally, we show a practical application of the REVC to the dynamic race detection problem in multi-threaded environments. We compare our tool to the currently existing VC-based tool DJIT <sup xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">+</sup> to show how the REVC can help in achieving higher performance with respect to the Vector Clock.

Highlights

  • A FUNDAMENTAL concept in distributed systems is that of tracking causality among events that occur at different processes in the system [1], [2]

  • We propose and formalize the concept of Resettable Encoded Vector Clock (REVC), a new logical clock implementation, which builds on the EVC to reduce its growth rate and, under given conditions, place an upper bound on its storage requirements, while maintaining the desirable properties of the EVC

  • In this paper we have presented the Resettable Encoded Vector Clock, a logical clock implementation that is built on top of the EVC with the objective of tackling its main drawbacks: high growth rate and unbounded growth

Read more

Summary

INTRODUCTION

A FUNDAMENTAL concept in distributed systems is that of tracking causality among events that occur at different processes in the system [1], [2]. On a single-threaded process, causality can be tracked by means of attaching a timestamp to each event, establishing a precedence relation among them This problem becomes much harder to solve in a multi-threaded or multi-processor environment, as concurrency among threads and processes depends on their relative speed and can change at any different execution. We propose and formalize the concept of Resettable Encoded Vector Clock (REVC), a new logical clock implementation, which builds on the EVC to reduce its growth rate and, under given conditions, place an upper bound on its storage requirements, while maintaining the desirable properties of the EVC. Its formulation contains several intrinsic tradeoffs that can be tuned by enabling or disabling optimization techniques, and choosing between bounded and unbounded implementations These configurations provide the REVC with a much higher adaptability to very different scenarios, which cannot be found in other logical clock implementations.

RELATED WORK
SYSTEM MODEL
Local Tick Operation
THE RESETTABLE ENCODED VECTOR CLOCK
Comparison Operation
REVC for Message Passing Systems
Growth Rate
Bounded Growth
REVC FOR DYNAMIC RACE DETECTION
Practical Consequences of FSFW
Evaluation
CONCLUSION
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call