We use cookies to improve your experience with our site.

Dalea:一个提升尾性能的持久化多层可拓展哈希

Dalea: A Persistent Multi-Level Extendible Hashing with Improved Tail Performance

  • 摘要:
    研究背景 持久化内存提供字节寻址、大容量和持久化,使得内存简直数据库系统能够从中受益。哈希结构在内存存储系统中被广泛应用,因此大量研究均聚焦于如何实现高性能的持久化哈希结构。高性能既表现在优秀的平均性能上,也体现在较好的尾性能上。
    目的 现在持久化哈希的相关工作往往聚焦于实现高平均性能,而忽略对尾性能的优化。本工作针对持久化哈希提出结构性优化,同时实现高平均性能与高尾性能。
    方法 Dalea聚合多个可拓展哈希并在这些哈希中共享目录,在不破坏可拓展哈希结构正确性的前提下保持细粒度rehash的能力以保证稳定且优秀的尾性能,并通过聚合实现良好的平均性能。此外,非持久化锁的使用能够进一步提升并发时的尾性能。
    结果 通过与其它已有持久化哈希结构在YCSB负载下的对比,验证了Dalea能够提升尾吞吐达4.1倍,且能够降低尾延迟达5.4倍。于此同时,Dalea能够取得至少对等与已有工作的平均性能。
    结论 借助多层可拓展哈希的结构,Dalea能够实现细粒度rehash,并采用非持久化锁进行并发控制。这使得Dalea能够在实现不低于其它持久化哈希的平均性能的情况下实现4.1倍尾吞吐提升和5.4倍尾延迟降低。在实验中我们发现,细粒度rehash和内存预分配能够有效降低尾延迟,非持久化锁能够同时提升尾吞吐和尾性能,指纹能够显著提升尾吞吐。

     

    Abstract: Persistent memory (PM) promises byte-addressability, large capacity, and durability. Main memory systems, such as key-value stores and in-memory databases, benefit from such features of PM. Due to the great popularity of hashing index in main memory systems, a number of research efforts are made to provide high average performance persistent hashing. However, suboptimal tail performance in terms of tail throughput and tail latency is still observed for existing persistent hashing. In this paper, we analyze major sources of suboptimal tail performance from key design issues of persistent hashing. We identify the global hash structure and concurrency control as remaining explorable design spaces for improving tail performance. We propose Directory-sharing Multi-level Extendible Hashing (Dalea) for PM. Dalea designs ancestor link-based extendible hashing as well as fine-grained transient lock to address the two main sources (rehashing and locking) affecting tail performance. The evaluation results show that, compared with state-of-the-art persistent hashing Dash, Dalea achieves increased tail throughput by 4.1x and reduced tail latency by 5.4x. Moreover, in order to provide design guidelines for improving tail performance, we adopt Dalea as a testbed to identify different impacts of four factors on tail performance, including fine-grained rehashing, transient locking, memory pre-allocation, and fingerprinting.

     

/

返回文章
返回