其實在 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 的開發者。