论文部分内容阅读
在存储系统中,CPU的处理速度远大于磁盘等I/O设备的读写速度,两者间的速度不匹配严重影响了系统整体性能。预取技术能够有效地弥补I/O设备与CPU之间的速度差异,因此被广泛应用。随着云技术、虚拟化技术的普及,集中存储前端往往承载着各种应用服务,导致前端单一应用负载内在的访问局部性和顺序性在后端被破坏,以往广泛采用的顺序预取不能很好地发挥作用。针对这样的问题,提出一种基于频繁序列挖掘的预取算法,以改进I/O预取效率,提高存储性能。 然而目前已提出的许多频繁序列挖掘算法针对的问题基本上是相关性挖掘、关联性分析等对时间响应没有严格要求的场景,这类场景更多的是关注序列挖掘的准确性从而相对地忽视了挖掘效率。但实时预取等时间关键的应用场景更多关注响应时间,现有的频繁序列挖掘算法往往会产生较大的时间开销。因此为了降低挖掘开销,适应存储系统等场景的在线连续运行,快速的频繁序列挖掘算法TcMiner能够有效地解决时间关键场景的局限性带来的问题。 基于TcMiner预取算法利用频繁序列挖掘技术对已发生的I/O访问行为进行快速分析,获取相关性强的数据序列,形成预取规则并采用子树间无包含关系的字典树(Tire Tree)来保存数据块间的相互关系,从而进行精度较高的预取操作。同时,为了适应不同的负载环境,在采用字典树进行预取的基础上进一步改进的多步预取和子树切割两种算法也可以进一步提高预取算法的精度。 测试表明,在内存占数据量5%的情况下,基于TcMiner的预取算法及其改进方法相比于LRU算法有明显提升,相比于C-miner采用的预取算法准确率提升22%~26%。当内存限定从256MB下降到32MB时,基于TcMiner的预取算法精度从93%下降到88%,而C-miner采用的预取算法精度从75%下降到52%,在内存较小的情况下,基于TcMiner的预取算法具有更好的适用性。