Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

6.4.2. 期限 I/O 排程器

期限 I/O(deadline I/O)排程器會試著對需求提供保證的延遲時間。值得注意的是,衡量延遲時間並不是從需求進入 I/O 排程器開始算起(這是重要的特徵,因為應用程式可能會進入睡眠狀態,等待需求描述子變為可用)。預設上,讀取的優先順序會高於寫入,因為應用程式更有可能會因為讀取 I/O 而延遲。
期限 I/O 排程器會批次處理 I/O;批次處理表示一系列、以 LBA 的順序(單向 elevator)增加的讀取或寫入 I/O。每次批次處理後,I/O 排程器會檢查寫入的需求是否等待過久,決定是不是要開始新的讀取或寫入批次處理。需求的 FIFO 清單只有在每次批次開始時,會被檢查是不是已經過期,而且只檢查該批次的資料方向。因此,如果選擇的是寫入批次處理,同時有已過期的讀取需求,那麼只有寫入需求完成後,才會輪到讀取需求。

微調參數

fifo_batch
這會決定單一批次處理中,發出的讀取與寫入數量。預設值為 16。將這個值提高會讓總處理能力變高,但延遲時間也會變長。
front_merges
如果您確定工作負載永遠不會產生「前端合併」(front merge),您可以將這微調選參數設為 0。除非您已經測量過這項檢查的工作負荷,否則建議您使用預設設定(1)即可。
read_expire
這項微調參數能讓使用者設定單次讀取所接受的服務時間,單位為 ms。預設值為 500 ms(半秒)。
write_expire
這項微調參數能讓使用者設定單次寫入所接受的服務時間,單位為 ms。預設值為 5000 ms(五秒)。
writes_starved
此微調參數會控制在處理單一寫入批次處理前,能處理多少寫入批次處理。這個值愈高,能給寫入處理的參照項目就愈多。