An Optimal Vector Clock Algorithm for Multithreaded Systems

01/19/2019
by   Xiong Zheng, et al.
0

Tracking causality (or happened-before relation) between events is useful for many applications such as debugging and recovery from failures. Consider a concurrent system with n threads and m objects. For such systems, either a vector clock of size n is used with one component per thread or a vector clock of size m is used with one component per object. A natural question is whether one can use a vector clock of size strictly less than the minimum of m and n to timestamp events. We give an algorithm in this paper that uses a hybrid of thread and object components. Our algorithm is guaranteed to return the minimum number of components necessary for vector clocks. We first consider the case when the interaction between objects and threads is statically known. This interaction is modeled by a thread-object bipartite graph. Our algorithm is based on finding the maximum bipartite matching of such a graph and then applying König-Egerváry Theorem to compute the minimum vertex cover to determine the optimal number of components necessary for the vector clock. We also propose two mechanisms to compute such an vector clock when computation is revealed in an online fashion. Evaluation on different types of graphs indicates that our offline algorithm generates a size vector clock which is significantly less than the minimum of m and n. These mechanisms are more effective when the underlying bipartite graph is not dense.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
04/18/2020

Mapping Matchings to Minimum Vertex Covers: Kőnig's Theorem Revisited

It is a celebrated result in early combinatorics that, in bipartite grap...
research
05/30/2019

The Bloom Clock

The bloom clock is a space-efficient, probabilistic data structure desig...
research
04/30/2021

Achieving Causality with Physical Clocks

Physical clocks provide more precision than applications can use. For ex...
research
11/23/2020

The Bloom Clock for Causality Testing

Testing for causality between events in distributed executions is a fund...
research
09/05/2020

Graphs and matrices: A translation of "Graphok és matrixok" by Dénes Kőnig (1931)

This paper, originally written in Hungarian by Dénes Kőnig in 1931, prov...
research
04/15/2020

The Binary Vector Clock

The Binary Vector Clock is a simple, yet space-efficient algorithm for g...
research
03/25/2023

Clo(o)k: A Clock That Looks

What if a clock could do more than just tell time - what if it could act...

Please sign up or login with your details

Forgot password? Click here to reset