Abstract
RCU is, among other things, a well known mechanism for memory reclamation that is meant to be used in languages without an automatic Garbage Collector, unfortunately, it requires operating system support, which is currently provided only in Linux. An alternative is to use Userspace RCU (URCU) which has two variants that can be deployed on other operating systems, named \emph{Memory Barrier} and \emph{Bullet Proof}.
We present a novel algorithm that implements the three core APIs of RCU: \texttt{rcu\_read\_lock()}, \texttt{rcu\_read\_unlock()}, and \texttt{synchronize\_rcu()}. Our algorithm uses one mutual exclusion lock and two reader-writer locks with \texttt{trylock()} capabilities, which means it does not need a language with a memory model or atomics API, and as such, it can be easily implemented in almost any language, regardless of the underlying CPU architecture, or operating system.
- I. Calciu, D. Dice, Y. Lev, V. Luchangco, V. J. Marathe, and N. Shavit. NUMA-aware reader-writer locks. PPoPP 2013, 2013. Google Scholar
Digital Library
- M. Desnoyers, P. E. McKenney, A. S. Stern, M. R. Dagenais, and J. Walpole. User-level implementations of read-copy update. Parallel and Distributed Systems, IEEE Transactions on, 23 (2): 375--382, 2012. Google Scholar
Digital Library
- P. E. McKenney, J. Appavoo, A. Kleen, O. Krieger, R. Russell, D. Sarma, and M. Soni. Read-copy update. In AUUG Conference Proceedings, page 175. AUUG, Inc., 2001.Google Scholar
Index Terms
POSTER: Poor Man's URCU
Recommendations
POSTER: Poor Man's URCU
PPoPP '17: Proceedings of the 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel ProgrammingRCU is, among other things, a well known mechanism for memory reclamation that is meant to be used in languages without an automatic Garbage Collector, unfortunately, it requires operating system support, which is currently provided only in Linux. An ...
Pessimistic software lock-elision
DISC'12: Proceedings of the 26th international conference on Distributed ComputingRead-write locks are one of the most prevalent lock forms in concurrent applications because they allow read accesses to locked code to proceed in parallel. However, they do not offer any parallelism between reads and writes.
This paper introduces ...
Nonblocking Algorithms and Preemption-Safe Locking on Multiprogrammed Shared Memory Multiprocessors
Most multiprocessors are multiprogrammed to achieve acceptable response time and to increase their utilization. Unfortunately, inopportune preemption may significantly degrade the performance of synchronized parallel applications. To address this ...







Comments