This paper presents multi-version read-log-update (MV-RLU), an extension of the read-log-update (RLU) synchronization mechanism. While RLU has many merits including an intuitive programming model and excellent performance for read-mostly workloads, we observed that the performance of RLU significantly drops in workloads with more write operations. The core problem is that RLU manages only two versions. To overcome such limitation, we extend RLU to support multi-versioning and propose new techniques to make multi-versioning efficient. At the core of MV-RLU design is concurrent autonomous garbage collection, which prevents reclaiming invisible versions being a bottleneck, and reduces the version traversal overhead-the main overhead of multiversion design. We extensively evaluate MV-RLU with the state-of-the-art synchronization mechanisms, including RCU, RLU, software transactional memory (STM), and lock-free approaches, on concurrent data structures and real-world applications (database concurrency control and in-memory key-value store). Our evaluation shows that MV-RLU significantly outperforms other techniques for a wide range of workloads with varying contention levels and data-set size.
CITATION STYLE
Kim, J., Mathew, A., Kashyap, S., Ramanathan, M. K., & Min, C. (2019). MV-RLU: Scaling Read-Log-Update with Multi-Versioning. In International Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS (pp. 779–792). Association for Computing Machinery. https://doi.org/10.1145/3297858.3304040
Mendeley helps you to discover research relevant for your work.