论文部分内容阅读
在大数据背景下,计算机系统对内存容量的需求越来越大。传统基于动态随机存取存储器(Dynamic Random Access Memory,DRAM)的内存系统在制造工艺和能耗上正面临着巨大的挑战,难以满足大数据时代的需求。随着材料和存储技术的迅速发展,以相变存储器(Phase Change Memory,PCM)和阻变存储器(Resistive Random Access Memory,RRAM)为代表的新型非易失内存(Non-Volatile Memory,NVM)开始出现。NVM具有掉电非易失、按字节修改寻址、快速访存、高存储密度、低静态功耗等优点,这些优良特性让NVM可以和DRAM一起组成混合内存系统,甚至在未来完全取代DRAM成为内存系统的主要存储介质。当NVM作为计算机内存的时候,高效的索引结构对于提升数据查询和空间管理的效率非常重要。然而,传统基于DRAM的索引结构并不能高效应用于新型NVM设备,因为它们既没有考虑NVM写性能较差和耐久性较低等缺陷,也无法保证系统意外断电情况下的数据一致性。本文探讨了基于NVM的索引结构面临的数据一致性、较差的写性能和较低的耐久性等问题,从单点查询和范围查询两个方面提出了解决方案,并从文件系统的角度给出了一种NVM索引结构的应用场景。本文的主要研究内容和创新点如下。针对传统哈希索引结构没有考虑到NVM存在的缺陷和数据一致性的问题,提出了一种基于NVM的高性能哈希索引结构Group hashing,减少了数据一致性带来的开销,降低了CPU Cache的失效率,提升了哈希索引的查找、插入和删除性能。Group hashing利用8字节原子写技术保证数据一致性,这样可以避免日志或者写时复制技术的使用,减少对于NVM的写操作以及一致性带来的额外开销。Group hashing提出了一种名为组内共享的技术,将哈希索引空间划分为多个地址连续的分组,把同一个分组内的哈希冲突单元存放到相匹配的分组里,在高效解决哈希冲突的同时降低了CPU Cache的失效率。此外,Group hashing还包含了一种组内再哈希的方法,降低了哈希冲突时在分组内搜索目标哈希单元带来的延迟,从而进一步提升哈希索引的查找性能。实验结果表明,Group hashing在三种真实负载下的查找、插入和删除性能和CPU Cache效率都要优于现有基于NVM的哈希索引结构。针对现有基于NVM的单一索引结构无法同时高效支持单点查询和范围查询这一问题,提出了一种基于NVM与DRAM结合的高性能混合索引方法HSHI,充分发挥了不同索引结构的优点,高效支持了范围查询,提升了混合索引的查找、插入和删除性能。HSHI使用哈希索引和跳跃表(Skiplist)组成混合索引:哈希索引作为主要索引位于NVM,用来处理查找、插入、删除等基本操作;跳跃表作为辅助索引位于DRAM,用来处理范围查询操作。HSHI对DRAM上的跳跃表采用异步更新机制,这样可以降低混合索引的写延迟。为了减少混合索引的一致性开销,HSHI利用8字节原子写保证数据一致性。此外,HSHI还使用了一种细粒度的锁机制来支持混合索引的并发访问。实验结果表明,HSHI能高效支持范围查询,而且在单线程和多线程负载下的查找、插入和删除操作性能都要优于现有支持范围查询的NVM索引结构。文件系统是索引结构应用的一个重要领域。针对传统文件系统日志技术无法高效应用于新型NVM设备的问题,提出了一种基于NVM的文件系统日志技术NJS,减少了文件系统的日志开销,提升了文件系统的写性能。为了减少对于NVM的写入数据量,NJS只将覆盖写数据和文件系统元数据写入到NVM,而追加写数据则直接写入文件系统。NJS提出了一种基于磨损感知的日志块分配方法,在每次分配空闲NVM日志块的时候,NJS都会选择磨损次数最少的日志块,从而提升NVM的使用寿命。NJS利用哈希索引管理NVM日志区域,并在此基础上提出了一种字节粒度的日志块更新策略,当NVM中的日志块需要更新的时候,NJS通过哈希索引寻找已有的旧版本日志块,利用旧版本实现就地更新,这样可以充分利用NVM按字节修改的特性。NJS还包含了一种垃圾回收机制用于回收无效日志块,可以减少日志数据写回到文件系统的频率,从而进一步提升文件系统的性能。实验结果表明,与采用Ramdisk作为日志设备的Ext4相比,NJS在不同负载下的吞吐量平均提升了57.1%。