RCU (read-copy-update): synchronization via structured deferral

According to Paul E. McKenney, Silas Boyd-Wickizer & Jonathan Walpole in a practical tech report about “the RCU API and how to apply it”

Most major Linux kernel subsystems use RCU as a synchronization mechanism. […] Understanding RCU is now a prerequisite for understanding the Linux implementation and its performance.

The success of RCU is, in part, due to its high performance in the presence of concurrent readers and updaters.
The RCU API facilitates this with two relatively simple
primitives: readers access data structures within RCU
read-side critical sections
, while updaters use RCU synchronization to wait for all pre-existing RCU read-side
critical sections to complete. When combined, these primitives allow threads to concurrently read data structures,
even while other threads are updating them. (LINK)

Then see McKenney’s more general (and fanciful) treatment in “Structured Deferral: Synchronization via Procrastination“, which also discusses hazard pointers.

Advertisements

Tell me (anonymous OK)

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s