论文部分内容阅读
传统的网络文件系统客户端利用页缓存来缓存服务器端的数据。然而,随着全球数据量的指数级增加,以及内存资源的稀缺性,如何提升网络文件系统对于海量数据的前端读写性能、降低网络和后端存储设备的负载越来越成为现今计算机系统结构研究的重点。此外,由于内存固有的易失性,使用内存作为网络文件系统的缓存使得系统重启后缓存变冷,因此造成了大量不必要的冷读缺失。
针对以上问题,本文主要论述了为网络文件系统客户端设计预取解决方案的方法和技术。该预取解决方案的特点是:①实现了预取机制和策略的分离,提升了该预取解决方案的通用性和可扩展性;②利用Fscache/cachefiles缓存设施实现了以非易失性的磁盘缓存为基础的预取,使得系统的重启不会使缓存变冷,降低了缓存预热的冷读开销;③实现了以稳定集模型为基础的预取策略,取得了良好的预取效果。本文的主要成果如下:
设计并实现了网络文件系统的通用缓存预取机制:定义了包括文件句柄在内的预取机制的系统调用接口,消除了对文件的错误重用,并提升了系统的通用性;通过使用directIO技术避免了预取对页缓存造成的污染,提升了系统对于海量数据缓存的适用性;通过聚合RPC请求减少了客户端向服务器端发送的RPC请求的数量,使得预取机制能更高效的发送预取命令,提升了该机制对上层预取策略的支持能力。设计并实现了基于稳定集模型的预取策略:抓取真实的网络文件系统对本地磁盘缓存的读写trace,并且使用稳定集挖掘算法生成的稳定集来指导预取。我们通过使用哈希表、base64编码和字符串哈希函数对文件句柄的查询进行了优化。本文给出的测试结果表明,通用缓存预取机制和基于稳定集模型的预取策略共同构成的网络文件系统预取解决方案能够能有效的减少网络文件系统本地客户端的访问时延,最高可提升36%的客户端访问性能。