中文

Jiffy:支持批量更新与快照的无锁跳表

数据结构与算法 2021-02-02 v1

摘要

在本文中,我们介绍Jiffy,这是首个提供以下两者的无锁、线性化有序键值索引:(1)批量更新,即原子执行的put和remove操作;以及(2)由例如范围扫描操作使用的一致性快照。Jiffy构建为一个多版本无锁跳表,并依赖CPU的时间戳计数器寄存器以最小代价生成版本号。为了更快的跳表遍历和更好的CPU缓存利用,键值条目被分组为称为修订版的不可变对象。此外,通过改变修订版的大小从而修改同步粒度,我们的索引能够适应不同的争用级别(较小的修订版更适合写密集型工作负载,而较大的修订版有益于读主导的工作负载,特别是当它们包含许多范围扫描操作时)。导致修订版大小改变的对索引的结构修改,通过(无锁)跳表节点分裂与合并操作实现,这些操作与更新操作精心协调。尽管语义丰富,Jiffy提供了高度可扩展的性能,可与最先进的支持线性化范围扫描操作的无锁有序索引相媲美或超越之。与其同样支持批量更新的(基于锁的)竞争对手相比,Jiffy执行大型批量更新的效率最高可达7.4倍。

关键词

引用

@article{arxiv.2102.01044,
  title  = {Jiffy: A Lock-free Skip List with Batch Updates and Snapshots},
  author = {Tadeusz Kobus and Maciej Kokociński and Paweł T. Wojciechowski},
  journal= {arXiv preprint arXiv:2102.01044},
  year   = {2021}
}