在一兩年前,Linux 核心尚缺乏一個好的的硬碟預讀機制時,桌面系統的使用者若要加速開機的速度,通常得先解決磁碟存取速度的瓶頸問題。於是得依賴如 這樣的工具來預先載入想讀入的檔案,以便提高系統載入的速度。
readahead 的基本原理是先預先載入開機過程可能使用的檔案到記憶體中 ()。如此開機程式執行時,便可節省讀入檔案的時間,進而加快開機速度。
當然,前提是你要有足夠的記憶體作快取。若你的系統只有小記憶體,不建議使用 readahead. 目前在 Ubuntu, Debian GNU/Linux 下使用的版本基於 Erich Schubert 、、,改自於 的版本。Fedora Project 則有另外一個概念相同,但由 RedHat 所開發的的。
以下所說明的是 Ubuntu, Debian GNU/Linux 版本。
為了使 readahead 可以正確的對開機所需的檔案快取,你必須教會 readahead 目前有多少檔案需要被預先載入,原則上只需要作一次。Ubuntu 在釋出官方版本時,便會內建一組預先較調的檔案列表。但若每次更新核心或套件系統,特別是開機所需的程式,其實都應該做過一次 “profile” 的動作,以便 readahead 保持正確的載入檔案列表。
相較於 Debian 說明 readahead 的說明文件,在 Ubuntu 由於仍,使用上則頗為謎樣,Ubuntu 的 等技術的,當下已經不特別需要這樣的工具,有時甚至反而會開機的時間。
試著在安裝了 的 上測試 (核心為 2.6.24-16-generic),以預設安裝軟體測試開機到桌面環境出現的 uptime,每次都大約 60s。進行 profile 則約使用 80 秒,profiled 過 readahead 開機速度相同。
另外也在我的 Thinkpad X60 1706-B69 上測試,軟體是 Debian sid, 核心為 2.6.26-1-686。系統裝了相當多雜七雜八的軟體,硬體裝了 2G 記憶體,硬碟則是 8M Buffer, 5400RPM 的 FUJITSU MHV2100B。profile 大約使用 152s,profiled readahead 開機則約 55s,關掉 readahead 則約 53s。