论文标题

关于移植内存中KV存储以持续内存的观察

Observations on Porting In-memory KV stores to Persistent Memory

论文作者

Choi, Brian, Saxena, Parv, Huang, Ryan, Burns, Randal

论文摘要

需要高通量和容错性的系统(例如键值商店和数据库)正在寻求持续的内存,以将内存系统的性能与非挥发性商店的数据一致性耐受性相结合。持续的内存设备可快速对非易失性存储器的bytea dddress访问。当将持久存储器集成到内存中的密钥值存储中时,我们将分析设计空间,并量化吞吐量,延迟和恢复时间之间的性能权衡。以前的工作探索了许多设计选择,但没有量化权衡。我们在redis和emcached中实现持久的内存支持,使每个数据结构以两种模式工作:(1)在持久内存中所有数据以及(2)一种混合模式,该模式使用持久的内存用于密钥/值数据和非挥发性内存,以索引和元数据。我们的经验揭示了三项可行的设计原则,尽管实现了截然不同,但在Redis和Memcached中持有。我们得出的结论是,混合设计增加了吞吐量并减少了延迟,恢复时间和代码复杂性的较小成本

Systems that require high-throughput and fault tolerance, such as key-value stores and databases, are looking to persistent memory to combine the performance of in-memory systems with the data-consistent fault-tolerance of nonvolatile stores. Persistent memory devices provide fast bytea-ddressable access to non-volatile memory. We analyze the design space when integrating persistent memory into in-memory key value stores and quantify performance tradeoffs between throughput, latency, and and recovery time. Previous works have explored many design choices, but did not quantify the tradeoffs. We implement persistent memory support in Redis and Memcached, adapting the data structures of each to work in two modes: (1) with all data in persistent memory and (2) a hybrid mode that uses persistent memory for key/value data and non-volatile memory for indexing and metadata. Our experience reveals three actionable design principles that hold in Redis and Memcached, despite their very different implementations. We conclude that the hybrid design increases throughput and decreases latency at a minor cost in recovery time and code complexity

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源