Centos

可以安全地禁用預讀服務嗎?

  • October 3, 2012

我只是在瀏覽伺服器(CentOS 5)的服務列表——這個問題可能也適用於其他 RedHat、Fedora 等版本。

請注意,我的伺服器通常在執行級別 3 中執行(沒有啟動 GUI 伺服器程序)。

我偶然發現了兩個服務:

  • readahead_early
  • readhahead_later

這兩個服務從/etc/sysconfig/readahead.d獲取配置

這些服務的目的似乎是將某些文件預載入到記憶體中。

瀏覽配置文件(保留預設內容),我看到的主要是與 X11 相關的文件和一些庫。

這些過程的更深層意義是什麼?AFAIK 每個文件將在第一次讀取訪問後進入記憶體記憶體。為什麼要預載入 - 為什麼要預載入所有這些不需要的文件?

恕我直言,這是在作業系統啟動期間對讀取頻寬的無用浪費。

更新

我發現這些預讀只會記憶體列出的文件的第一個 inode 條目(通過fstat系統呼叫)。所以它只是加快了查找這些文件的速度……

2012-10-02 更新

問題歸結為:我可以安全地在伺服器上禁用這些服務,還是我在這裡遺漏了一些重要的東西?

我相應地更新了問題的標題,因為給定的答案還沒有達到目標。

這個想法是在需要這些文件之前將它們載入到記憶體中,以便在 X 嘗試啟動時無需等待它們。

顯然,對系統日常操作中實際上不需要的文件執行此操作沒有多大意義,因此例如記憶體 X 伺服器本身在您的情況下會適得其反,是的;但是,您可能會對有時會被拉入的內容感到驚訝:很可能您的伺服器執行的某些程序實際上確實拉入了 X11 庫,也許是通過 Cairo,所以不要草率地認為這是無用的!

如果系統在啟動時定期跟踪自己以找出要預記憶體的內容(以及何時),可能會更好;Windows 做了類似的事情。(它還在每個 exe 的基礎上為程序啟動執行此操作;實際上,我已經看到核心在查閱有關新程序執行檔的記錄後,很早就將內容拉入記憶體!)

同樣,這一切都是為了減少等待物品從儲存中進入所花費的時間。

編輯:

當然,這不是必需的。如果沒有發生,什麼都不會破壞(除非是愚蠢的錯誤);啟動時間會有所不同。

引用自:https://unix.stackexchange.com/questions/47112