如何更改Linux的I/O排程器

行者武松發表於2018-03-13

Linux 的 I/O 排程器是一個以塊式 I/O 訪問儲存卷的程式,有時也叫磁碟排程器。Linux I/O 排程器的工作機制是控制塊裝置的請求佇列:確定佇列中哪些 I/O 的優先順序更高以及何時下發 I/O 到塊裝置,以此來減少磁碟尋道時間,從而提高系統的吞吐量。

目前 Linux 上有如下幾種 I/O 排程演算法:

  • noop – 通常用於記憶體儲存的裝置。
  • cfq – 完全公平排程器。程式平均使用IO頻寬。
  • Deadline – 針對延遲的排程器,每一個 I/O,都有一個最晚執行時間。
  • Anticipatory – 啟發式排程,類似 Deadline 演算法,但是引入預測機制提高效能。

檢視裝置當前的 I/O 排程器:

# cat /sys/block//queue/scheduler

假設磁碟名稱是 /dev/sdc:

# cat /sys/block/sdc/queue/schedulernoop anticipatory deadline [cfq]

如何改變硬碟裝置 I/O 排程器

使用如下指令:

# echo {SCHEDULER-NAME} > /sys/block//queue/scheduler

比如設定 noop 排程器:

# echo noop > /sys/block/sdc/queue/scheduler

以上設定重啟後會失效,要想重啟後配置仍生效,需要在核心啟動引數中將 elevator=noop 寫入 /boot/grub/menu.lst:

1. 備份 menu.lst 檔案

cp -/boot/grub/menu.lst /boot/grub/menu.lst-backup

2. 更新 /boot/grub/menu.lst

將 elevator=noop 新增到檔案末尾,比如:

kernel /vmlinuz-2.6.16.60-0.91.1-smp root=/dev/sysvg/root splash=silent splash=off showopts elevator=noop
原文釋出時間:2017-03-27

本文來自雲棲社群合作伙伴“Debian社群”,瞭解相關資訊可以關注“Debian社群”。


相關文章