Last-modified: 2013-03-14 (木) 01:36:34
LinuxTips/I/Oスケジューラを変更したい

概要

I/Oスケジューラーを変更する方法です。
利用目的に応じて最適なI/Oスケジューラを選択することで、パフォーマンスを向上できます。

一時的に変更してプロファイルする

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
-
!
 
-
!
 
-
# 確認
cat /sys/block/[デバイス名]/queue/scheduler
 
# 設定
echo [I/Oスケジューラ名] > /sys/block/[デバイス名]/queue/scheduler
 
# bonnieやその他プロファイラ、実システムなどを動かしパフォーマンスを確認する

恒久設定

  1. インストール
    Everything is expanded.Everything is shortened.
      1
      2
      3
    
    -
    |
    !
    
    # デバイスごとに指定するのであれば、sysfsutilsをインストールする
    # (システム全体の設定にするには、ブートローダーのブートオプションで指定するらしい)
    apt-get install sysfsutils
  2. /etc/sysfs.confを編集
    Everything is expanded.Everything is shortened.
      1
      2
      3
      4
      5
    
    -
    !
     
    -
    !
    
    # 追加
    block/[デバイス名]/queue/scheduler=[I/Oスケジューラ名]
     
    # 例
    block/vda/queue/scheduler=deadline
  3. 再起動

I/Oスケジューラ

名称概要
cfqプロセス毎にキューを割り当てる。I/O要求は優先度を基に処理する
deadlineデッドラインを経過しても処理されないI/O要求を優先的に処理する
anticipatoryプロセス毎の統計情報に基づいて、連続領域へのI/O要求を待ってから処理する
noop要求順にI/O処理をする

検証時の環境