Prefetch -加速Linux软体执行速度

  其实在Linux上做档案快取(readahead/prefetch)的技术颇多,除了稍早讲的readahead,还有preload, bootcache/filecache与prefetch. (prelink是加快ELF shared libraries/executables的载入速度,不算是档案快取)

  不过readahead只在开机的产生效用,若开机后得依赖preload等工具来做档案快取。但以user space的daemon每几秒扫一次系统的效果实在不怎么好。

  比较吸引我注意的是SoC 2007中的一个计画prefetch。

  prefetch算是融合了前几个计画的优点与特色的专案,计画整合了kernel patch与userspace工具,主要特色是透过核心作监视各软体启动所需要取用的档案,配合userspace工具做到自动更新(dynamic profiling)。

  对使用者而言,操作起来容易许多,不需要像readahead或bootcache/filecache作手动「教育」,且使用效率上也会比preload来的好。当然,与readahead相较起来,实做方式也比较轻盈、聪明。

  技术细节可以参考Krzysztof Lichota的提案(Ubuntu Wiki)与简报。 Prefetch原始码可于Launchpad下载,相关文件与文献位于Google Code.另外,Behdad Esfahbod的论文“Preload — An Adaptive Prefetching Daemon”也很值得参考。

  BTW, Krzysztof Lichota也是one-click installer的开发者。