Efficient Timestamping for Sampling-based Race Detection
Minjian Zhang, Daniel Wee Soong Lim, Mosaad Al Thokair, Umang Mathur, Mahesh Viswanathan
TL;DR
This work addresses the overhead of dynamic HB-race detection in sampling-based settings by introducing a freshness timestamp and compact data structures to reduce vector-clock work. It formulates and solves the Analysis Problem, showing that the analysis can be performed in time nearly proportional to the sample size with per-event costs tied to the number of threads, and introduces a nearly optimal algorithm that uses freshness timestamps and shallow copies via ordered lists. The authors prove bounds on vector-clock traversals and demonstrate instance-optimal behavior in practice, implementing and evaluating the approach in ThreadSanitizer and the RAPID offline framework. Experiments on real-world benchmarks (e.g., MySQL workloads) show substantial reductions in algorithmic overhead at low sampling rates without sacrificing a large fraction of race-detection capability, indicating practical impact for production-friendly sampling-based race detectors.
Abstract
Dynamic race detection based on the happens before (HB) partial order has now become the de facto approach to quickly identify data races in multi-threaded software. Most practical implementations for detecting these races use timestamps to infer causality between events and detect races based on these timestamps. Such an algorithm updates timestamps (stored in vector clocks) at every event in the execution, and is known to induce excessive overhead. Random sampling has emerged as a promising algorithmic paradigm to offset this overhead. It offers the promise of making sound race detection scalable. In this work we consider the task of designing an efficient sampling based race detector with low overhead for timestamping when the number of sampled events is much smaller than the total events in an execution. To solve this problem, we propose (1) a new notion of freshness timestamp, (2) a new data structure to store timestamps, and (3) an algorithm that uses a combination of them to reduce the cost of timestamping in sampling based race detection. Further, we prove that our algorithm is close to optimal -- the number of vector clock traversals is bounded by the number of sampled events and number of threads, and further, on any given dynamic execution, the cost of timestamping due to our algorithm is close to the amount of work any timestamping-based algorithm must perform on that execution, that is it is instance optimal. Our evaluation on real world benchmarks demonstrates the effectiveness of our proposed algorithm over prior timestamping algorithms that are agnostic to sampling.
