次の構成の2つのサーバーAとBがあります。
単一のRAIDパーティションで次のベンチマークを実行します。iozone -a -s 10240 -r 4 -+r
Aの結果(抜粋):
random random bkwd record stride
kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread
10240 4 108 474 4193564 6667334 6556395 701 4058822 475 3653175 2303202 2616201 6785306 6101840
Bの結果(抜粋):
random random bkwd record stride
kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread
10240 4 3332 46961 5478410 6836065 4994841 2951 2853077 728 2299133 1722202 2008983 4549365 4712594
両方のサーバーでライトスルーキャッシュが有効になっていますが、根本原因を特定できません。これは、サーバーB(3332 kB /秒)と比較して、サーバーA(108kB /秒)でライトスループットのパフォーマンスがひどく遅い理由です。結果は正しく。
理由は何でしょうか?両方のサーバーには、同じ他のファイルシステムオプション(ext4 /同じデフォルトオプション)があります。
同期書き込みが多いワークロードでは、メーカーBのディスクがAのディスクよりも優れているというのは事実でしょうか。
ありがとう。
あなたの結果の間で測定された33倍の違いに関して、コメントでの議論をフォローアップすると、MegaCli64 -LDGetProp -DskCache -Lall -aAll
はsetup Bディスクドライブキャッシュはデフォルトで有効になっていますが、セットアップAでは無効になっています。
MegaCli64 -LDSetProp -DisDskCache -Immediate -Lall -aAll
を使用すると、両方のシステムで同様のパフォーマンスが示されました。
ディスクドライブキャッシュを有効にしてRAIDを実行することは、実際には、書き込みキャッシュを有効にして(強制ライトバックモード)、BBUでバックアップされていない揮発性キャッシュを使用してRAIDコントローラーを実行することと似ています。パフォーマンスは向上しますが、同時に、電源障害が発生した場合にデータが失われたり、データの不整合が発生したりする可能性が高くなります。
この機会を回避したい場合は、適切なI/Oパフォーマンスを維持しながら、BBUバックキャッシュを備えたコントローラーを用意し、ディスクキャッシュを無効にしてボリュームをライトバックモードに構成することをお勧めします。
あなたがすでに知っているかどうかはわかりませんが、ソフトウェアとハードウェアのRAIDの間にはもっと多くのことがあります( これはこれに関する興味深い記事です )。
結局、 MegaRAID SAS 2008 は多かれ少なかれRAID機能が追加されたHBAまたはIOコントローラーですが、 MegaRAID SAS 3108 は実際のRAIDController™(ROCまたはRAID-on-Chip)、RAID計算を処理するための専用プロセッサを備えています。
SAS 2008は、一部のOEMファームウェア(コメントで述べたPERC H310のDellのものなど)でのひどい書き込みパフォーマンスで特に知られています。
特に、選択したレコード長とファイルサイズと組み合わせた同期モードでは、ソフトウェア/偽のRAIDでの結果が非常に悪くなるようです。
参考までに、これはソフトウェアRAID1で10k WD VelocityRaptorsを使用してワークステーションで取得したものです。
random random bkwd record stride
KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread
10240 4 182 181 1804774 2127084 2110984 167 1673159 153 1760968 954589 1203989 2022512 2062824
したがって、同期モード(O_SYNC)で実行している場合、結果Aは、ソフト/フェイクRAIDを介して配信できるものに関して妥当であるように思われます。
そうは思いません。書き込みキャッシュをアクティブにすると、コントローラーは特定の操作を実行して、保留中の書き込み操作を最適化できます。
たとえば、キャッシュ操作のこの説明は、HP Smart Arrayコントローラーの ホワイトペーパー から取得されます。
書き込みキャッシュは通常、ワークロードの高い環境ではいっぱいになり、ほとんどの場合いっぱいのままになります。コントローラはこの機会を利用して、保留中の書き込みコマンドを分析し、効率を向上させます。コントローラは、隣接する論理ブロックへの小さな書き込みを1つの大きな書き込みに結合して実行を高速化する、書き込み合体を使用できます。コントローラは、コマンドの並べ替えを実行して、キャッシュ内の書き込みの実行順序を並べ替えて、ディスク全体の待ち時間を短縮することもできます。
ご覧のとおり、キャッシュは配列のwrite-performanceをさらに強化するために使用されますが、これはパフォーマンスに影響を与えないようです。後続の書き込みまたは読み取り操作の.
ディスクの断片化に関しては、これはファイルシステム/ OSレベルの問題です。 RAIDコントローラー(ブロックレベルで動作)はファイルシステムの断片化をまったく最適化できないため、write-trough
モードとwrite-back
モードのどちらで動作しても違いはありません。