2010年8月27日金曜日

RHEL I/Oスケジューラの変更


このエントリーをはてなブックマークに追加


RHELのI/Oスケジューラの変更方法。
環境によっては結構差が出てくるので、何がベストとは言い難い。
簡単にテストできるので環境に合わせて最適なスケジューラを設定しよう。

KVMではdeadlineスケジューラが推奨されている。


LinuxのブロックデバイスI/Oスケジューラはデバイス単位で指定されている。
現在の設定を確認するには、sysファイルシステム以下のblockを参照する。

# cat /sys/block/sda/queue/scheduler

noop anticipatory deadline [cfq]

こんな感じで出力されて、[]で囲まれているものが現在の値だ。RHELではcfqがデフォルト値となる。
この値は動的に変更可能で、変更するには設定したいスケジューラ文字列を上記のsysファイルシステムに書き込むだけ。

# echo deadline > /sys/block/sda/queue/scheduler
# cat /sys/block/sda/queue/scheduler

noop anticipatory [deadline] cfq

書き込んだ瞬間からスケジューラが切り替わる。

良く使うのは以下の二つ。

cfq・・・全てのプロセスに均等にI/Oを割り当てる。多数のプロセスが細かいI/Oを大量に発生させる場合はこれが良い。

deadline・・・I/O待ち時間の限界点(deadline)を設けて、それが近付いたものを優先的に処理していく。少数のプロセスが大量のI/Oを発生させる環境に適している。

 *いづれもマルチプロセッサ環境での話。

sysファイルシステムを変更する方法は一時的なもので、恒久的な変更を行う場合、カーネル引数として渡す事で実現できる。

elevator=deadline とか書く。

LinuxのI/Oスケジューラは基本的にハードディスクを意識して作られているので、SSDとか使う場合はまた話が変わってくる(気がする)


詳細な解説は以下が大変に参考になります。

参考>> Linux で最速を追求するハードディスクの最適化(1)
参考>> Linux で最速を追求するハードディスクの最適化(2)
参考>> Linux で最速を追求するハードディスクの最適化:パート2(1)
参考>> Linux で最速を追求するハードディスクの最適化:パート2(2)

KVM徹底入門

KVM徹底入門

価格:3,444円(税込、送料別)