论文部分内容阅读
传统计算机存储架构中,内存和磁盘之间易失和非易失的天然边界以及巨大的性能差异,致使应用程序数据在内存和磁盘之间的格式转换开销过大。新型存储级内存SCM(Storage Class Memory)兼具磁盘的非易失性和内存的字节可寻址特性,可以直连内存总线并使用访存指令进行读写,它模糊了传统内存和磁盘之间的边界,使应用程序数据直接持久化存储在SCM上成为可能,从而消除应用程序数据构建中磁盘数据转换为内存数据的过程(结构化)和数据持久化中内存数据转换为磁盘数据的过程(序列化)的开销。因此基于SCM的数据持久化技术研究具有重要意义。针对前述问题,提出了基于SCM的轻量级对象持久化技术LOPT(Lightweight Object Persistence Technology)。首先,LOPT将底层SCM抽象成对象,并使用内存映射技术直接将SCM对象映射到应用程序地址空间,消除了应用程序数据序列化及结构化时间,LOPT通过向上提供一整套用户态对象编程接口使应用程序绕过冗杂的系统调用直接使用访存指令操作底层SCM对象,从而消除部分系统调用开销,保证系统轻量化;其次,对于SCM对象的管理,LOPT采用了分级管理的方法并在用户态添加对象缓冲池,该方式有效地降低了对象管理系统调用开销;最后,LOPT充分发挥了SCM字节可寻址特性,采用64字节的细粒度日志技术来避免了传统日志技术中的写放大问题,同时采用Intel硬件原语保证处理器缓存数据一致性,并针对不同事务采取了日志区预分配策略,来降低应用程序数据一致性日志开销。实验测试结果表明,对比传统应用程序,LOPT可以使链表、B树以及哈希表的构建时间分别降低94%、96%和75%,从而提高应用程序的数据处理速度;对比Berkeley DB,LOPT可以降低数据写延迟5%到72%。