论文部分内容阅读
数据的爆炸式增长使得当前的存储系统规模越来越庞大。而云计算、云存储和大数据等新技术不断的出现,也对存储系统的容量、性能等方面提出了更高的要求。当前数据中心广泛使用异构存储设备构建大规模存储系统,以满足存储容量和性能需求的不断增加。如何构建大规模异构存储系统面临诸多问题,其中一个典型问题是由于设备负载和服务能力不匹配,使得存储系统中广泛使用的条带等并行访问技术难以充分发挥作用,导致性能降低。同时,随着云存储等技术的发展,不同应用共享异构存储系统越来越普遍,如何为这些应用提供服务质量保证或者服务公平性非常重要,而存储系统异构性更是对解决这一问题提出了更高的挑战。通过研究异构存储系统中的缓存算法,解决异构存储系统中的性能优化和服务质量保证等问题,主要内容包括以下几个方面。 针对异构存储系统的设备负载和服务能力不匹配所导致的性能降低问题,提出了一种基于负载特征识别和访问性能预测的缓存算法(Caper)。Caper算法的主要思想是通过优化缓存调度来平衡I/O请求在异构存储设备上的性能差异,减少甚至消除性能最差的存储设备在异构存储系统中性能瓶颈问题。Caper算法采用缓存分区策略,为了合理设置缓存分区的大小,Caper算法用CART模型预测I/O请求在存储设备上的性能,并结合性能预测结果分析不同访问特征负载的缓存需求。此外,Caper算法还改进时钟缓存替换算法以进一步提高缓存效益。实验结果表明,和Clock算法、Forney算法以及Chakraborty算法相比,Caper算法在不同类型的负载访问下均能够获得比较明显的性能提升。 为应用提供服务质量保证一直都是共享存储系统中的重要研究内容。然而,当不同应用共享缓存时,不同I/O请求到达率的应用之间相互影响程度不一样。在传统缓存算法(如LRU算法)中,和I/O请求到达率较高的应用相比,I/O请求到达率较低的应用获得的缓存资源比较少,从而造成I/O请求到达率较低的应用的服务质量难以保证。针对不同I/O请求到达率的应用共享缓存时存在的上述问题,提出了一种服务质量保证的缓存算法(Qaca)。Qaca算法采用开始时间公平队列控制I/O请求的服务顺序,并采用基于反馈结构的缓存管理策略动态调整应用之间的缓存分配。算法周期性地跟踪应用的服务质量保证程度,计算已满足服务质量保证的应用的富余缓存,然后将这些富余缓存分配给未达到服务质量保证的应用,以保证更多应用的服务质量。在执行缓存分配时,Qaca算法根据富余缓存是否充足采用性能优先或者服务质量优先的缓存分配策略。实验结果表明,和LRU算法和Static算法相比,Qaca算法能够以较小的性能牺牲获得较大程度的服务质量保证,甚至有可能同时获得少量的性能提升。 在不同I/O请求到达率的应用共享缓存时,传统的预取算法存在较多的预取浪费和预取缓存污染,从而导致性能降低。特别是I/O请求到达率较低的应用,其预取缓存命中率的降低程度要远远高于I/O请求到达率较高的应用,从而使得性能降低呈现不公平性。针对不同应用在共享预取缓存中存在的上述问题,本文提出了一种优化性能和兼顾公平性的预取算法Fepa。为了减少因应用的I/O请求到达率差异造成的预取浪费和预取缓存污染,提出了一种基于I/O请求到达率的预取长度动态调整策略,提高缓存效益和整体性能。此外,Fepa算法分别为每个应用计算最小缓存需求,以避免一个应用发生预取缓存缺失,同时还能够让其它应用分配到更多的缓存,从而提高缓存分配公平性。并以最小缓存需求计算为基础,提出一种基于轮询方法的缓存分配策略,在公平性和整体性能之间取得较好的平衡。实验表明,和LRU算法、Linux内核自带的预取算法以及AMP预取算法相比,Fepa算法在性能和公平性方面都有较好的效果。