论文标题
路径复制树的意外缩放
Unexpected Scaling in Path Copying Trees
论文作者
论文摘要
尽管已经提出了各种各样的手工制作的并发数据结构,但对于构建并发数据结构的通用方法(称为通用构造或UCS)仍然存在很大的兴趣。这些方法(半)会自动将顺序数据结构转换为并发。最简单的方法使用可以保护顺序数据结构的锁,并且一次只允许一个过程访问它。结果数据结构使用锁,因此正在阻止。相反,大多数在UCS上的工作都集中在获得非阻滞进度的保证,例如阻塞 - 自由,锁定或候补。许多非阻滞UCS都出现了。关键示例包括Herlihy的开创性候补UC,Yi等人的Numa Awane UC,以及Fatouou等人的大型大物体的有效UC。 我们从持久的数据结构和多次并发控制(MVCC)中借用想法,最著名的是复制路径,并使用它们来实现连续的持久数据结构的并发版本。尽管我们期望我们的数据结构不会在重量的工作量下扩展,但它们在实践中扩展。我们在模型中通过私人每个程序库来分析确认此扩展。
Although a wide variety of handcrafted concurrent data structures have been proposed, there is considerable interest in universal approaches (henceforth called Universal Constructions or UCs) for building concurrent data structures. These approaches (semi-)automatically convert a sequential data structure into a concurrent one. The simplest approach uses locks that protect a sequential data structure and allow only one process to access it at a time. The resulting data structures use locks, and hence are blocking. Most work on UCs instead focuses on obtaining non-blocking progress guarantees such as obstruction-freedom, lock-freedom, or wait-freedom. Many non-blocking UCs have appeared. Key examples include the seminal wait-free UC by Herlihy, a NUMA-aware UC by Yi et al., and an efficient UC for large objects by Fatourou et al. We borrow ideas from persistent data structures and multi-version concurrency control (MVCC), most notably path copying, and use them to implement concurrent versions of sequential persistent data structures. Despite our expectation that our data structures would not scale under write-heavy workloads, they scale in practice. We confirm this scaling analytically in our model with private per-process caches.