论文部分内容阅读
传统动态随机存储器(Dynamic Random Access Memory,DRAM)面临存储密度难以进一步提升、刷新功耗高等问题。而新兴持久内存(Persistent Memory,PM)的读写性能与DRAM接近,同时还具有低功耗、非易失等特性。这使得PM正在成为DRAM内存的一种补充。在PM的几种访问模式中,直接访问(Direct Access, DAX)模式支持应用利用PM的非易失性,且避免了将数据拷贝到页高速缓存中的开销,是广为采用的访问模式。然而,现有面向DAX模式的系统软件尚未考虑PM的寿命问题,可能导致PM设备因为部分存储单元的快速磨损而出现故障。同时,现有损耗均衡技术并不能将写操作均布到所有PM中,当直接用于DAX模式下的PM时还有可能引发崩溃一致性问题。
为了在保证崩溃一致性的同时将写操作均布到所有PM中,设计并实现了WellPM(Wear-leveling for Persistent Memory in DAX Mode)。WellPM通过软硬件协同的方式实现全局损耗均衡。具体地,硬件完成页内损耗均衡并追踪承受写次数较多的页(即热点页),而软件分配空闲页并迁移热点页。WellPM将内存页分为4类:各进程独享的互斥分配内存、被映射到进程虚拟地址空间的映射内存、各进程共享且大小固定的静态预留内存和各进程共享且大小动态增长的共享分配内存。不同类型的PM页具有不同的特性,需要采用不同的方式进行分配和迁移。在分配静态预留内存和共享分配内存的时候,WellPM会将其映射到连续的虚拟地址空间中,并维护用于保存映射关系的映射表。WellPM通过替换指针变量中的地址迁移互斥分配内存,通过同时更新进程页表和文件索引结构迁移映射内存,通过同时更新进程页表和映射表迁移静态预留内存和共享分配内存。
为了验证WellPM,开发了用于追踪各PM页写次数的平台WellPM-bench,并在此平台上评估WellPM的效果和开销。实验结果表明:与目前最好的方法相比,WellPM能将系统寿命提升2-4个数量级。同时也分别评估了WellPM-bench和WellPM所带来的性能损失,它们分别将宏基准测试每秒完成的事务数或操作数降低1.88%~33.33%和0.15%~2.70%。
为了在保证崩溃一致性的同时将写操作均布到所有PM中,设计并实现了WellPM(Wear-leveling for Persistent Memory in DAX Mode)。WellPM通过软硬件协同的方式实现全局损耗均衡。具体地,硬件完成页内损耗均衡并追踪承受写次数较多的页(即热点页),而软件分配空闲页并迁移热点页。WellPM将内存页分为4类:各进程独享的互斥分配内存、被映射到进程虚拟地址空间的映射内存、各进程共享且大小固定的静态预留内存和各进程共享且大小动态增长的共享分配内存。不同类型的PM页具有不同的特性,需要采用不同的方式进行分配和迁移。在分配静态预留内存和共享分配内存的时候,WellPM会将其映射到连续的虚拟地址空间中,并维护用于保存映射关系的映射表。WellPM通过替换指针变量中的地址迁移互斥分配内存,通过同时更新进程页表和文件索引结构迁移映射内存,通过同时更新进程页表和映射表迁移静态预留内存和共享分配内存。
为了验证WellPM,开发了用于追踪各PM页写次数的平台WellPM-bench,并在此平台上评估WellPM的效果和开销。实验结果表明:与目前最好的方法相比,WellPM能将系统寿命提升2-4个数量级。同时也分别评估了WellPM-bench和WellPM所带来的性能损失,它们分别将宏基准测试每秒完成的事务数或操作数降低1.88%~33.33%和0.15%~2.70%。