web-dev-qa-db-ja.com

2つのHDDメーカーのiozoneO_SYNCベンチマークで根本原因となるパフォーマンスが大きく異なる

次の構成の2つのサーバーAとBがあります。

  • A:4TB HDD、RAID 1(MegaRAID SAS 2008)、128MBキャッシュ、BBUなし、ライトスルーモード、7.2k RPM、メーカーA)。
  • B:1.5TB HDD、RAID 1(MegaRAID SAS 3108)、64MBキャッシュ、BBU付き、ただしライトスルーモード、10.5k RPM、メーカー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のディスクよりも優れているというのは事実でしょうか。

ありがとう。

5
Vimal

あなたの結果の間で測定された33倍の違いに関して、コメントでの議論をフォローアップすると、MegaCli64 -LDGetProp -DskCache -Lall -aAllsetup Bディスクドライブキャッシュはデフォルトで有効になっていますが、セットアップAでは無効になっています。

MegaCli64 -LDSetProp -DisDskCache -Immediate -Lall -aAllを使用すると、両方のシステムで同様のパフォーマンスが示されました。

ディスクドライブキャッシュを有効にしてRAIDを実行しても安全ですか?

ディスクドライブキャッシュを有効にしてRAIDを実行することは、実際には、書き込みキャッシュを有効にして(強制ライトバックモード)、BBUでバックアップされていない揮発性キャッシュを使用してRAIDコントローラーを実行することと似ています。パフォーマンスは向上しますが、同時に、電源障害が発生した場合にデータが失われたり、データの不整合が発生したりする可能性が高くなります。

この機会を回避したい場合は、適切なI/Oパフォーマンスを維持しながら、BBUバックキャッシュを備えたコントローラーを用意し、ディスクキャッシュを無効にしてボリュームをライトバックモードに構成することをお勧めします。

2つのRAIDコントローラーの違い

あなたがすでに知っているかどうかはわかりませんが、ソフトウェアとハ​​ードウェアの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モードのどちらで動作しても違いはありません。

3
s1lv3r