论文部分内容阅读
传统的Key-Value存储系统受限于操作系统的内核处理开销,难以发挥底层新型网络和存储硬件设备高吞吐与低延迟的性能优势。用户级IO技术将传统内核功能转移到用户空间进行定制可消除内核的性能开销。本文基于标准以太网与NVMe固态存储系统,整体考虑网络栈与存储栈,设计并实现了融合二者的全用户空间高性能Key-Value存储系统UserKV。 本文的主要工作和贡献为: 1.提出了控制平面与数据平面分离的统一网络与存储的用户级软件IO栈。控制与数据平面分离,以保证高效的数据通路。且每个平面紧密统一网络与存储,最大限度降低系统软件的管理控制开销。控制平面由同一个CPU核心在用户态下直接管理网卡设备与NVMe设备的底层硬件列队,并使用单一上下文的轮询机制取代传统的多上下文中断机制,消除了传统内核机制下多次进出内核态、设备多次中断导致的上下文切换,数据拷贝与冗余软件栈处理,以及潜在的核间通信与数据迁移等弊端。数据平面借助用户空间设备驱动,通过DMA技术直接与Key-Value存储系统进行数据传输,并采用统一的数据中转内存池,没有额外的数据拷贝与操作系统干涉。 2.设计并实现了支持DRAM-SSD二级存储的用户级Key-Value系统UserKV。UserKV基于Memcached实现,采用了本文提出的用户级融合IO栈,并针对Key-Value存储系统本身的数据管理,提出了三种优化方法,包括:1)改进置换策略,同时保证顺序写入和内存命中率。2)合并网络IO,避免重复SSD访问。3)大消息分片传输,SSD读取与网络通信并行流水,以隐藏数据传输延迟。 实验结果表明,UserKV与原生Memcached相比,涉及SSD的SET操作的QPS提高了14.97%-97.78%,GET操作的QPS提高了16.71%-32.48%。延迟方面,涉及SSD的SET操作的p95延迟降低了26.12%-40.90%,GET操作的p95延迟降低了15.10%-24.36%。