Userspace RCU
liburcu is a LGPLv2.1 userspace RCU (read-copy-update) library. This data synchronization library provides read-side access which scales linearly with the number of cores. It does so by allowing multiples copies of a given data structure to live at the same time, and by monitoring the data structure accesses to detect grace periods after which memory reclamation is possible.
liburcu-cds provides efficient data structures based on RCU and lock-free algorithms. Those structures include hash tables, queues, stacks, and doubly-linked lists.
The liburcu project has been started by Mathieu Desnoyers.
Documents
Binary packages
liburcu is available as a Debian package named liburcu1. The development files are available in package liburcu-dev.
A package is also available on Arch Linux in the AUR.
Source
Repository
The library is available for download in this git repository :
- git clone git://git.lttng.org/userspace-rcu.git
Mailing list
To the question "why is this hosted on the LTTng website ?", the answer is : the userspace RCU library was needed for the LTTng userspace tracer port. The userspace tracer implementation is therefore the motivation and first user of liburcu.
Other projects using liburcu
- Knot DNS : Knot DNS is a high-performance authoritative-only DNS server.
- Netsniff-ng : Netsniff-ng is a high-performance Linux networking toolkit.
- Sheepdog : Sheepdog is a distributed storage system for QEMU/KVM.
