閱讀178 返回首頁    go 阿裏雲 go 技術社區[雲棲]


如何更改 Linux 的 I/O 調度器

Linux 的 I/O 調度器是一個以塊式 I/O 訪問存儲卷的進程,有時也叫磁盤調度器。Linux I/O 調度器的工作機製是控製塊設備的請求隊列:確定隊列中哪些 I/O 的優先級更高以及何時下發 I/O 到塊設備,以此來減少磁盤尋道時間,從而提高係統的吞吐量。

目前 Linux 上有如下幾種 I/O 調度算法:

  1. noop - 通常用於內存存儲的設備。
  2. cfq - 完全公平調度器。進程平均使用IO帶寬。
  3. Deadline - 針對延遲的調度器,每一個 I/O,都有一個最晚執行時間。
  4. Anticipatory - 啟發式調度,類似 Deadline 算法,但是引入預測機製提高性能。

查看設備當前的 I/O 調度器:


  1. # cat /sys/block/<Disk_Name>/queue/scheduler

假設磁盤名稱是 /dev/sdc


  1. # cat /sys/block/sdc/queue/scheduler
  2. noop anticipatory deadline [cfq]

如何改變硬盤設備 I/O 調度器

使用如下指令:


  1. # echo {SCHEDULER-NAME} > /sys/block/<Disk_Name>/queue/scheduler

比如設置 noop 調度器:


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

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

1. 備份 menu.lst 文件


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

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

將 elevator=noop 添加到文件末尾,比如:


  1. kernel /vmlinuz-2.6.16.60-0.91.1-smp root=/dev/sysvg/root splash=silent splash=off showopts elevator=noop

原文發布時間為:2017-03-24

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-05-23 15:36:54

  上一篇:go  從被動反應到有自我意識,人工智能的四種類型
  下一篇:go  線程基礎之JAVA和C++0x的特性