mysqlをコンパイルします。テストには、マッスルディストリビューションのsql-benchディレクトリからrun-all-testsを使用します。 これはすべて、デフォルトのCFQシェダラーが使用されているホームマシンで行いました。 マシンはAMD Athlon(tm)64 X2デュアルコアプロセッサ4800+であり、両方のコアが動作します(何らかの理由でテストに1つしか使用されませんでした)、2ギガバイトのメモリ。 ネジ-SATA1、AHCI。 MySQL 5.0.54。
合計テスト時間がテスト結果として使用されました。 紳士では、1600秒、ソラリウムでは1300秒、セントでは12000秒を超えました。
今日、私は実験を拡張し、さまざまなIOスケジューラで筋肉の動作をテストすることにしました。 結果はやや不可解でした。 だから
予想-1795秒
締め切り-1867秒
CFQ-1523秒
つまり、予想されるものではありません。 カーネルを構成する際のヘルプによると:
- 一般に、予測I / Oスケジューラはほとんどの環境に適していますが、期限I / Oスケジューラと比較すると非常に大きく複雑です。また、場合によっては、特にデータベースのロードが遅くなる可能性があります。
- デッドラインI / Oスケジューラーはシンプルでコンパクトであり、多くの場合、予想されるI / Oスケジューラーと同等で、一部のデータベースワークロードではより優れています。 ディスクへのI / Oを一度に実行する単一プロセスの場合、その動作は予測I / Oスケジューラとほぼ同じであるため、適切な選択です。
- CFQ I / Oスケジューラは、システム内のすべてのプロセスに帯域幅を均等に分配しようとします。 デスクトップシステムに適した、公正な作業環境を提供する必要があります。
つまり、締め切りには最高のパフォーマンスが期待されていましたが、実際には、最も遅いことが判明しました。 予想は平均的な結果を示しましたが、CFQ(デスクトップ!!!)は競合他社より5分近く先行していました。 テストは動作中のデスクトップシステムで実行されましたが、その時点ではネジに実質的に負荷はありませんでした。
他のバージョンのマッスルで遊ぶのは理にかなっているかもしれませんが、mysqlのプロダクションサーバーを別のシェダーに移動することを考えました。