web-dev-qa-db-ja.com

Linux IO RAIDを備えたデータベースのスケジューラー

6ディスクRAID10を搭載したLinuxデータベース(MySQL)サーバー(Dell 2950)があります。デフォルトのIOスケジューラーはCFQです。しかし、私が読んだり聞いたりしたところ、そこには基盤となるRAIDコントローラによって並べ替え/スケジューリングも行われる場合、CFQのようなスケジューラは必要ありません。逆に、基盤となるRAID構成が考慮されていないため、CFQによってパフォーマンスが実際に低下する可能性があります。また、主にR/Wアクセスの性質上、データベースにnoop/deadline IOスケジューラーを使用することをお勧めします。

したがって、問題は、これらの状況でCFQの代わりにnoopまたはdeadlineスケジューラを使用する必要があるかどうかです。

3
Raghu

すべてのワークロードは異なります。したがって、この質問に対するすべての答えに1つのサイズで対応できるわけではありません。物事をより複雑にするために、ほとんどのIOスケジューラーには調整可能機能があります。したがって、実行できる最善のことは、実際のワークロードベンチマークにできるだけ近いテストを行うことです。テストが繰り返し可能である限り、動作するはずです。

再起動せずにオンザフライでIOスケジューラーを変更できるため、ioスケジューラーの実験が簡単になります。これを行うには、このecho anticipatory | Sudo tee /sys/block/sdb/queue/schedulerのようなコマンドを使用して、予測を選択したスケジューラーに置き換えます。ルートとしてログインしている場合は、echo anticipatory > /sys/block/sdb/queue/schedulerを実行することもできます。Sudoを使用できるように、teeアプローチを使用しています。

Minaevのように、忙しいファイルサーバーでのDeadlineには多くの幸運がありました。ほとんどがコンピューティングクラスターを使用した画像処理であったため、データベース関連のものはありませんでした。ただし、2つのGigEリンクが飽和状態になり、そのサーバーが一度に48時間ロードされます。

また、外部RAIDアレイを扱うときにNOOPを使用しました。外部とは、RAIDコントローラーが外部シャーシに自己完結しており、サーバーがこれをSCSIドライブと見なしていることを意味します。 RAIDコントローラーがサーバーにある場合でも、NOOPは避けたいと思います。しかし、いくつかのベンチマークを使用して、自分に最適なものを理解できるはずです。

4
3dinfluence

それが役立つかどうかはわかりませんが、Red Hat Magazineの興味深い記事があります: "RedHat®EnterpriseLinux®4および2.6カーネルのI/Oスケジューラーの選択" 。私は通常、スケジューラーを期限に設定し、サーバー上で問題なく動作しますが、期限が本当に良いことを証明する数字がないことを認めなければなりません。

2
minaev