RCX: Read-Copy Transact

Read-copy update (RCU) can provide ideal scalability for read-mostly workloads, but some believe that it provides only poor performance for updates. This belief is due to the lack of RCU-centric update synchronization mechanisms. RCU instead works with a range of update-side mechanisms, such as locking. In fact, many developers embrace simplicity by using global locking. Logging, hardware transactional memory, or fine-grained locking can provide better scalability, but each of these approaches has limitations, such as imposing overhead on readers or poor scalability on non-uniform memory access (NUMA) systems, mainly due to their lack of NUMA-aware design principles.

This project introduces an RCU extension (RCX) that provides highly scalable RCU updates on NUMA systems while retaining RCU’s read-side benefits. RCX combines hardware transactional memory (HTM) and traditional locking based on our NUMA-aware design principles for RCU. Micro-benchmarks on a NUMA system having 144 hardware threads show RCX has up to 22.61 times better performance and up to 145.00 times lower HTM abort rates compared to a state-of-the-art RCU/HTM combination. To demonstrate the effectiveness and applicability of RCX, we have applied RCX to parallelize some of the Linux kernel memory management system and an in-memory database system. The optimized kernel and the database show up to 24 and 17 times better performance compared to the original version, respectively.

Source Code

The source code of RCX is available at: https://github.com/rcx-sync.

Publications and Presentations

  • SeongJae Park, Paul E. McKenney, Laurent Dufour, Heon Y. Yeom, An HTM-Based Update-side Synchronization for RCU on NUMA systems. In 15th ACM European Conference on Computer Systems (EuroSys), April 2020. Paper, Video (Short), Video (Long), Slides, Link


2020-04-19: The EuroSys'20 paper is uploaded at ACM DL.

2020-04-04: The accepted papers list of EuroSys'20 has uploaded

2020-02-14: The paper introducing RCX has accepted to be presented by EuroSys'20.

SeongJae Park
Kernel Development Engineer

SeongJae Park is a programmer who loves to analyze and develop systems.