
對我來說,找出核心中 I/O 調度程序的最佳選擇是一個挑戰。首先我了解到它是主觀的,然後它取決於您使用的檔案系統。
我知道您No-op
絕對應該使用固態硬碟 (SSD)。
我想知道的是包含 Ext4 和 NTFS 檔案系統(MBR 樣式)的普通(旋轉)HDD 的最佳選擇。
GPT 或 MBR 對我的選擇有影響嗎?
答案1
我知道您絕對應該對固態硬碟或 SSD 使用無操作。
不必要。我不知道為什麼人們一直將 SSD 視為不需要其他調度程序的優勢的特殊情況。擁有旋轉磁碟僅意味著合併請求更重要。合併請求只是調度程序所做的一件事。
CFQ、Deadline 等的作用遠不止於此。例如,CFQ 讓您可以為特定進程提供高於其他進程的優先權(通過ionice
),而 Deadline 可以為您提供延遲保證。其中任何一個仍然與 SSD 相關。
擺脫旋轉磁碟僅意味著您的調度程序決策可能更多是關於您希望如何劃分往返磁碟的頻寬,而不僅僅是合併請求。
編輯:我還將指出,在我的系統上,可以使用/sys/block/sdXX/queue/nomerges
可調參數關閉合併(無論調度程序如何)。 Deadline 還提供了一個用於停用前端合併的可調參數。
我想知道的是包含 ext4 和 NTFS 檔案系統的普通(旋轉)硬碟的最佳選擇。 (MBR 風格)。
調度程序的選擇可能並不完全依賴您正在使用的檔案系統。無論如何,目錄和經常使用的檔案最終都會出現在檔案系統快取中。無論哪種方式,似乎沒有一個調度程序具有任何使一個檔案系統(XFS、ext3、ext4+extents、reiserfs 等)優於另一個檔案系統的功能。
NTFS 往往會變得嚴重碎片化,因此較小的檔案系統read_ahead_kb
可能會更有利(您必須試用它才能找到適合您的檔案系統)。基本上,如果它是一個嚴重碎片化的捲,那麼提取相鄰資料可能只會阻塞本來可以用於合法請求的頻寬。
GPT/MBR 根本不會影響這個決定。