2006年10月13日

ディスクIO性能(13) - I/Oスケジューラ

Linux の I/O スケジューラは 2.6 から4種類から選択できるようになっている。つい最近まで、anticipatory(as)が標準だった。なので、前回までの検証環境ではこれを使って評価していた。

どのI/Oスケジューラ(1,2,3)が良いかは一概に言えない。。。らしい。

  1. noop 単純なFIFO順。マージンのみを行う。ランダムアクセス時にシーク遅延がないものや独自にスケジューリングを行うデバイスに合う。フラッシュメモリ(CFも含む?)やラムディスク用。
  2. deadline セクタ順でソートし片方向の elevator を行い、同時に期限を設定して応答性を確保する。読み込みを優先する。(2.4までのスケジューラをかなり改良したものかぁ?)
  3. anticipatory deadline がベース。適度に待ちを発生させて、セクタ順でのソートの機会を多くする。このとき読み込みパターンの履歴から予測して待ち時間を決める。結果シーク遅延を減りスループットを向上するらしい(元ネタ)。但し、予想が上手く行かずにボロボロになる場合があるらしい。 小規模なシステム、ディスクトップ向けらしい。ファイルサーバにも良いらしい。RAIDやTCQ/NCQを持つものには向かないらしい。
  4. CFQ(Complete Fair Queuing) リクエストをプロセス毎に均一に割り当てる。Fair Queuing と呼ばれるスケジューラの一族らしい。イマイチ実態つかめず。

なので RAID で anticipatory スケジューラの組み合わせはダメダメな気がする。

これからスケジューラのパラメータでチューニングする場合 deadline か CFQ を当たるのがよさげ。

0 件のコメント:

Cocoa Emacs 24.3 構築 (2013/03版)

暫く使っている Cocoa Emacs を更新していなかったので、24.3 に上げてみた。 当てるパッチは inline patch と ポップアップフリーズ対応パッチ くらい。 24.3 には既にフルスクリーン実装が入っているので、よく使われているフルスクリーンパッチは外し...