论文部分内容阅读
外存与内存日益增大的性能差异一直是计算机系统的主要瓶颈之一,闪存的非易失性和高性能恰好填补了二者之间的空白,带来了解决问题的新机遇。尽管具备种种优势,但是由于成本、容量等因素的限制,完全由闪存组成的固态存储系统在实际生产中使用较少,而闪存和磁盘所组成的混合存储系统则得到了大量的应用。构成混合存储系统的一种直接的方法便是使用高速的闪存作为磁盘的缓存加速数据密集型应用。然而传统的缓存管理算法主要针对主存设计,没有考虑到闪存本身的物理特性和性能特征,不能最大限度的发挥闪存的性能优势,反而有可能放大其写性能较差和寿命有限等缺陷,因此研究专门针对闪存的缓存管理方法显得十分必要。本文探讨了使用闪存和固态盘作为磁盘缓存时所面临的性能和耐久性问题,从三个不同角度分别提出改进方案。(1)从减少写操作次数的角度,提出一种自适应惰性替换算法LARC(Lazy Adaptive Replacement Cache)。LARC的核心思想是采用选择性替换,以减少缓存替换对固态盘造成的额外写操作,避免密集的写操作造成固态盘的性能降低和寿命缩短。LARC使用开销极低的影子缓存记录最近的访问历史,能够较为有效的识别热点数据块。在缓存不命中时,LARC只把可能成为热点的数据块替换进缓存,非热点数据被过滤掉。这种做法避免了缓存污染,使得热点数据能够被缓存更长时间。另一方面,也减少了替换写的次数,缓解了固态盘垃圾回收对性能造成的影响,提高了其性能并延长了其使用寿命。仿真实验和对原型实现的基准测试都表明,LARC在大大减少固态盘写次数情况下,仍然能达到跟其他算法相近甚至更高的命中率,因此达到了同时提高了缓存系统性能和延长了闪存使用寿命的双重目标。实验结果还表明,LARC在读密集型应用下效果极佳,对于写密集性应用也有一定的效果。(2)从减少固态盘写放大的角度,提出了采用主动淘汰机制的PE-LRU算法。PE-LRU算法通过主动删除固态盘中的非热点数据(使用TRIM命令),尽早释放其所占用的闪存空间,避免这些数据在垃圾回收时成为额外的负担。固态盘进行垃圾回时需要移动目标块中有效数据,会造成额外的闪存写操作。这种写放大效应对固态盘是有害的,不仅降低其性能,还会加速磨损。缓存在固态盘中的非热点数据不但不能提高命中率和性能,反而会加剧写放大。PE-LRU根据固态盘使用情况,主动淘汰这部分数据,以牺牲缓存空间利用率为代价缓解了写放大,从而提高了固态盘的性能。PE-LRU对将固态盘分成读、写两个缓存区,将更新频率较高的写缓存数据和较为稳定的读缓存数据分开管理。为了避免淘汰数据造成的碎片化,PE-LRU将缓存数据组织成页簇,并以页簇为单位进行淘汰。实验表明,PE-LRU能以较小的命中率为代价,有效的减少固态盘的写放大,提升其性能,进而缩短缓存系统的平均响应时间,特别是对于写密集型负载,PE-LRU效果更加显著。(3)针对SLC/MLC双模闪存提出一种新的缓存架构DMFC(Dual-mode Flash Cache)。双模闪存是指可以在SLC或MLC两种工作模式下切换的闪存设备,其优势在于能够根据应用的需求对容量和性能进行折衷。当双模闪存用作缓存时,使用MLC模式能活得更大的缓存容量,从而达到更高命中率,而SLC模式能提供更高的读写速度。针对这一特点,本文提出了用于管理双模闪存SFS(Scalable Flash Storage)抽象层,并在此基础上设计了DMFC缓存架构。DMFC利用SFS的差异化写操作接口,使用SLC缓存用户写请求,用MLC作为读缓存,有效的利用了二者的性能特点。SFS在垃圾回收时自动调整两种闪存的比例以适应不同应用的需求。利用SFS的选择性存留机制,DMFC只将脏数据和热点读数据持久存储在闪存中,允许SFS在垃圾回收时淘汰其他数据,以降低垃圾回收开销。实验表明,DMFC以较小的命中率损失为代价,提高了闪存本身的性能,进而缩短了用户I/O的平均延迟,在多数应用(特别是写密集型应用)负载下,都能够达到很好的效果。