Skip to main content
QUICK REVIEW

[论文解读] A Concurrency-Optimal List-Based Set

Aksenov, Vitaly, Vincent Gramoli|arXiv (Cornell University)|Feb 5, 2015
Distributed systems and fault tolerance参考文献 24被引用 3
一句话总结

本文提出了基于数值的列表(VBL),一种并发最优的基于列表的集合算法,通过使用值感知的尝试加锁同步机制,仅拒绝那些违反线性化性质的调度。通过在获取锁之前验证下一节点中的值,VBL 实现了更高的并发性,在高度竞争的工作负载下,其性能相比懒惰链表和 Harris-Michael 算法最高提升 1.6 倍。

ABSTRACT

Designing an efficient concurrent data structure is an important challenge that is not easy to meet. Intuitively, efficiency of an implementation is defined, in the first place, by its ability to process applied operations in parallel, without using unnecessary synchronization. As we show in this paper, even for a data structure as simple as a linked list used to implement the set type, the most efficient algorithms known so far are not concurrency-optimal: they may reject correct concurrent schedules. We propose a new algorithm for the list-based set based on a value-aware try-lock that we show to achieve optimal concurrency: it only rejects concurrent schedules that violate correctness of the implemented set type. We show empirically that reaching optimality does not induce a significant overhead. In fact, our implementation of the concurrency-optimal algorithm outperforms both the Lazy Linked List and the Harris-Michael state-of-the-art algorithms.

研究动机与目标

  • 为解决现有基于列表的集合算法中缺乏并发最优性的问题,这些算法不必要地拒绝了正确的并发调度。
  • 设计一种并发数据结构,接受所有正确的交错执行——即实现并发最优性——同时不牺牲性能。
  • 评估实现最优并发性是否会引起显著的性能开销,或是否能在竞争环境下实现更好的可扩展性。
  • 证明值感知同步可同时提升基于列表集合的并发性和性能。

提出的方法

  • 引入一种值感知的尝试加锁机制:先获取锁,然后在继续前验证下一节点中的值是否已更改。
  • 结合懒惰链表的无等待遍历机制与 Harris-Michael 的逻辑删除模型,将元数据与结构更新解耦。
  • 在获取锁前执行值验证,从而在操作不修改数据时减少对元数据的不必要竞争。
  • 使用比较并交换(CAS)进行锁获取,若在验证期间值发生变化则重启操作,以确保一致性。
  • 利用 Java 的垃圾回收器进行内存回收,将元数据(如删除标记、版本号)与结构数据分离,以减少虚假共享并提升性能。
  • 形式化证明 VBL 仅拒绝那些会违反线性化性质的调度,因此具备并发最优性。

实验结果

研究问题

  • RQ1能否设计一种基于列表的集合,使其具备并发最优性,即接受所有正确的并发调度?
  • RQ2与现有高性能算法相比,实现并发最优性是否会带来显著的性能开销?
  • RQ3值感知同步是否能够同时提升并发链表的并发性和吞吐量?
  • RQ4在高竞争环境下,VBL 相较于懒惰链表和 Harris-Michael 算法的性能表现如何?

主要发现

  • VBL 通过仅拒绝那些会违反线性化性质的调度,实现了并发最优性,使其成为迄今为止最高效的基于列表的集合算法。
  • 在 72 核的 Intel 机器上,当使用 72 个线程执行 20% 更新工作负载时,VBL 的性能相比懒惰链表最高提升 1.6 倍。
  • 在只读工作负载下,由于遍历过程中元数据访问减少,VBL 相比 Harris-Michael 算法最高提升 1.6 倍。
  • 在懒惰链表中,当线程数超过 40 个后性能下降的现象在 VBL 中得到缓解,表明其在高竞争环境下具备更好的可扩展性。
  • 实证评估表明,最优并发性不会带来显著的性能开销,且 VBL 在高度竞争场景下仍能保持高吞吐量。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。