论文部分内容阅读
新一代的非易失性存储器技术正在兴起,其中包括相变化内存(Phase Change Memory,PCM)、阻变存储器(Resistive Random Access Memory,ReRAM)和英特尔的3D XPoint等。这项新的存储器技术能够提供接近动态随机存取存储器(Dynamic Random Access Memory,DRAM)的读写速度、字节粒度的可寻址性、快速持久化等应用需要的功能。为了使应用能够有效地使用非易失性存储器,即在易于编程性、快速恢复能力以及高性能中取得平衡,过往工作提出了通过非易失性事务(性)内存(Persistent Transactional Memory,aka Durable Transaction)的抽象来访问非易失性存储器。非易失性事务内存需要保证事务(Transaction)的ACID属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。为了保证事务的一致性和持久性,相关工作往往在临界区间内执行持久化操作或者由少数后台线程执行持久化操作,因而降低了事务系统的总体性能,尤其是限制了可伸缩性。于是,如何利用非易失性存储器来高效地实现事务内存的一致性与持久性成为了一个新的挑战。本文提出了快照非易失性事务内存(SsPTM)——一个实现了快照隔离级别的非易失性事物内存。首先,通过双版本同步控制机制和双版本持久化控制机制,快照非易失性事务内存保证了事务内存系统在本地执行环境中的高性能与高可伸缩性。其中,双版本同步控制机制保证了事务的原子性、一致性和隔离性,而双版本持久化控制机制保证了事务的崩溃一致性和持久性。其次,通过限制性同步控制机制,快照非易失性事务内存缓解了同步控制机制在虚拟化环境中的性能问题,从而提高了系统在虚拟化环境中的性能与可伸缩性。为了实现事物内存系统(在本地执行环境中)的高性能与高可伸缩性,快照非易失性事务内存采用了快照隔离级别。本工作的核心观察在于:积极同步控制机制能够实现快照隔离级别,允许读操作与持久化操作并行执行,且只读事务在大多数应用中占主导地位。为了保证事务内存系统对只读事务的友好性,本工作对积极同步控制机制(即多版本同步控制机制)进行了重新设计,并提出了双版本同步控制机制。该机制为一份对象保留至多两个版本,利用双版本的维护使得读操作总是能够即刻完成并返回,且允许读操作与写/持久化操作并行执行。同时,为了减小非易失性存储器写性能低对事务内存系统的性能影响,双版本持久化控制机制通过重做型日志和三段式提交的方法来提高事务的持久化操作的性能与可伸缩性。重做型日志利用双版本同步控制机制中的(易失性)日志作为重做型日志,减少了写操作的次数。三段式提交与双版本同步控制机制高度耦合,借助同步控制机制来避免事务之间的依赖追踪,允许多事务并行地、不受阻塞地执行持久化操作,从而提高了持久化操作的并发度。同时,在虚拟化环境中,虚拟机监视器对虚拟处理器的调度可能会对事务内存系统的性能造成影响。为了提高事务内存系统在虚拟化环境中的性能与可伸缩性,本文提出了限制性同步控制机制。该机制利用英特尔限制性事务内存来侦听虚拟处理器的调度/抢占事件,并在持锁的虚拟处理器被抢占时,由硬件回滚事务内容,由软件释放获取的锁。通过限制性同步控制机制,快照非易失性事务内存缓解了虚拟化环境中抢占问题对同步控制机制产生的负面影响,从而提升了事务内存系统的性能与可伸缩性。本工作在一台20核(40线程)的处理器上对快照非易失性事务内存进行了性能评估实验。实验结果表明,快照非易失性事务内存呈现的性能,尤其是可伸缩性,超过了相关工作(即DUDETM)。快照非易失性事务内存在微基准程序中达到了DUDETM 52.8倍的吞吐量,在TPC-C NewOrder基准程序中得到了比DUDETM高43.5%的吞吐量,并且均具有更好的可伸缩性。实验结果同样表明,相比内核排队自旋锁,限制性同步控制机制能够有效提高应用程序在虚拟化环境中的性能。对于包括Apache、Kernbench以及Pbzip2在内的基准程序,限制性同步控制机制能够将性能提高至多21%。