Speaker
Description
RCU data structures are notoriously complex to design mainly due to the
need to carefully manage how mutations are made observable to concurrent
readers.
As a general solution to this problem, I am proposing a novel
transaction-based synchronisation mechanism: "RCU Transactions"
(urcu_txn).
It applies both to userspace and kernel. It allows publishing complex
data structure mutations atomically to RCU readers, and synchronizing
updates from multiple writers, with minimal overhead on the read-side
(low-bit pointer tag check, predicted branch on rcu_dereference), and no
size overhead on the data structure nodes. It is composable: an object
can belong to multiple transaction-aware data structures, and
transactions allow it to become visible (or hidden) atomically.