環境によっては結構差が出てくるので、何がベストとは言い難い。
簡単にテストできるので環境に合わせて最適なスケジューラを設定しよう。
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徹底入門 価格:3,444円(税込、送料別) |