Ⅰ 誰有linux i/o 調度演算法deadline,anticipatory,noop,cfq中各個調優參數的具體作用。
1.Deadline scheler Deadline scheler 用 deadline 演算法保證對於既定的 IO 請求以最小的延遲時間,從這一點理解,對於 DSS 應用應該會是很適合的。
2.Anticipatory scheler(as) 曾經一度是 Linux 2.6 Kernel 的 IO scheler 。Anticipatory 的中文含義是」預料的, 預想的」, 這個詞的確揭示了這個演算法的特點,簡單的說,有個 IO 發生的時候,如果又有進程請求 IO 操作,則將產生一個默認的 6 毫秒猜測時間,猜測下一個 進程請求 IO 是要干什麼的。這對於隨即讀取會造成比較大的延時,對資料庫應用很糟糕,而對於 Web Server 等則會表現的不錯。這個演算法也可以簡單理解為面向低速磁碟的,因為那個」猜測」實際上的目的是為了減少磁頭移動時間。
3.Completely Fair Queuing 雖然這世界上沒有完全公平的事情,但是並不妨礙開源愛好者們設計一個完全公平的 IO 調度演算法。Completely Fair Queuing (cfq, 完全公平隊列) 在 2.6.18 取代了 Anticipatory scheler 成為 Linux Kernel 默認的 IO scheler 。cfq 對每個進程維護一個 IO 隊列,各個進程發來的 IO 請求會被 cfq 以輪循方式處理。也就是對每一個 IO 請求都是公平的。這使得 cfq 很適合離散讀的應用(eg: OLTP DB)。我所知道的企業級 Linux 發行版中,SuSE Linux 好像是最先默認用 cfq 的.
4.NOOP Noop 對於 IO 不那麼操心,對所有的 IO請求都用 FIFO 隊列形式處理,默認認為 IO 不會存在性能問題。這也使得 CPU 也不用那麼操心。當然,對於復雜一點的應用類型,使用這個調度器,用戶自己就會非常操心。