We study the performance power of software combining in designing persistent algorithms and data structures. We present Bcomb, a new blocking highly-efficient combining protocol, and built upon it to get PBcomb, a persistent version of it that performs a small number of persistence instructions and exhibits low synchronization cost. We built fundamental recoverable data structures, such as stacks and queues based on PBcomb, as well as on PWFcomb, a wait-free universal construction we present. Our experiments show that PBcomb and PWFcomb outperform by far state-of-the-art recoverable universal constructions and transactional memory systems, many of which ensure weaker consistency properties than our algorithms. We built recoverable queues and stacks, based on PBcomb and PWFcomb, and present experiments to show that they have much better performance than previous recoverable implementations of stacks and queues. We build the first recoverable implementation of a concurrent heap and present experiments to show that it has good performance when the size of the heap is not very large.
翻译:我们研究了软件合并在设计持久化算法与数据结构中的性能优势。我们提出了Bcomb——一种新型高吞吐阻塞式合并协议,并在此基础上构建了其持久化版本PBcomb,该版本仅执行少量持久化指令且同步开销极低。基于PBcomb及我们提出的无等待通用构造PWFcomb,我们构建了栈、队列等基础可恢复数据结构。实验表明,PBcomb与PWFcomb在性能上远超现有最先进的可恢复通用构造与事务内存系统——其中多数系统甚至只能提供比我们算法更弱的一致性保证。基于PBcomb与PWFcomb构建的可恢复队列和栈的测试显示,其性能显著优于已有可恢复栈/队列实现。我们还首次实现了可恢复并发堆,实验表明在堆规模适中时该实现具有良好性能。