论文部分内容阅读
计算机系统计算单元与存储单元的性能差距越来越大。存储系统性能的优化对文件系统乃至计算机的整体性能提高有非常重要的作用。数据预取技术是重要的优化手段之一,它不仅用在CPU内部预取指令与数据,更是在数据存储领域得到广泛的研究与应用。然而,大多数的缓存预取算法对应用程序的访问模式有较严格的前提或者假设,使得算法只能优化特定的一类应用程序。本文试图使用数据挖掘的手段从应用程序的数据访问历史中找到其访问模式,以此来帮助预取程序识别访问模式,并做出正确的预取决策。我们的算法不对应用程序做假设,只依赖挖掘出来的访问模式。本文在回顾了一些具有代表性的研究成果和Linux内核所实现的预取算法的基础上,提出了在系统更底层实施预取算法的构想。本文提出了面向预测的关联规则,讨论了这种规则的约束条件以及区别于一般关联规则的特点,重点讨论了时间约束条件对规则的挖掘和应用方面的影响。并指出磁盘的数据访问模式可以用这样的关联规则表示,同时它也能直接用于预取算法中对磁盘访问的预测。在第三章中我们详细讨论了规则挖掘算法设计要点与优化手段。为了达到预取程序所需的实时性,规则的匹配也要求具有较强的实时性。在第四章我们讨论了基本的规则匹配算法以及实时性更佳的基于布隆过滤器的匹配算法。该方法可以避免几乎全部的无效查询。实验表明,每次规则匹配中,该算法几乎能保证一次查询就匹配到规则数据库中的结果。最后文章给出了一个模拟仿真实验环境,在此环境中可以评估本文提出的挖掘、预取算法的性能指标。为了能获取任意真实应用程序的磁盘访问行为,本文还给出了一个在Linux内核中实现的磁盘访问记录抓取程序。作者使用这个工具分别记录下系统运行OLTPBench程序和编译一次Linux内核时,发生的所有磁盘访问记录。连同另外一个公共数据集[54]测试了算法的可行性与性能指标。实验表明,预取算法能够明显提升应用程序的响应时间,并达到了良好的实时性。