ソフトウェアRAID 5と6のストライプサイズ:小さなストライプサイズがなぜ効率が悪いのですか?

ソフトウェアRAID 5と6のストライプサイズ:小さなストライプサイズがなぜ効率が悪いのですか?

ここでは、小さなストライプサイズがLinuxのソフトウェア(およびハードウェア)RAID 5および6に適していないことを読んでいます。私が見た珍しいベンチマークはこれに完全に同意します。
しかし、与えられた説明は、それがより多くの頭の動きを引き起こすということです。私は小さなストライプがどのように頭を動かすのか理解していません。

4つのローカルSASドライブを含むRAID 6設定があるとします。

ケース1:1Gbの順次データ書き込み
プログラムはカーネルにデータの書き込みを要求し、それをストライプサイズに合わせて分割し、各ディスクに書き込む各ブロック(データおよび/またはパリティ)を計算します。
カーネルは、適切なディスクコントローラを使用して4つのディスクに同時に書き込むことができます。
記録されたデータがストライプと完全に整列していない場合、カーネルは結果データを計算する前に最初と最後のストライプのみを読み取る必要があります。他のすべてのストリップは、以前のデータに関係なく上書きされます。
この計算はディスクスループットよりはるかに速く完了するため、各ブロックは一時停止せずに各ディスクの前のブロックのすぐ隣に書き込まれます。したがって、これは基本的に4つのディスクへの順次書き込みです。
小さなストライプサイズのため、どのように速度が遅くなりますか?

ケース2:ランダムな位置に1,000,000 x 1kbのデータを書き込みます。
1kbはストライプサイズ(現在の一般的なストライプサイズは512kb)より小さく、
プログラムはカーネルにいくつかのデータ、他のデータ、再び他のデータなどを書き込むように要求します。各書き込みに対して、カーネルは現在のデータを読み取る必要があります。データをディスクに保存し、新しいコンテンツを計算してディスクに書き戻します。その後、頭が別の場所に移動し、作業が999,999回繰り返されます。
ストライプサイズが小さいほど、データの読み取り/計算/書き込み速度が速くなります。理想的には、4kbのストライプサイズが最新のディスクに最適です(正しく配置されている場合)。

それでは、小さなストリップサイズはどのように速度を遅くするのですか?

ベストアンサー1

私が知る限り、この問題は頭の動きに関連しているわけではなく、すべてのオーバーヘッドが原因で発生します。指定された順次読み取りまたは書き込みの場合、4KBストライプサイズは64KBストライプサイズより16倍多くの操作を実行します。より多くのCPU時間、より多くのメモリ帯域幅、より多くのコンテキスト切り替え、より多くのI / O、カーネルI / Oスケジューラのより多くの作業、より多くの計算のマージなどにより、最終的にすべてのI / OOにはより多くの遅延があります発生します。

多くのアプリケーションはキューサイズが1のI / Oを実行しているため、16個の4KB順次要求をディスクへの64KB要求に常に統合できるわけではありません。

また、一般的なATTOディスクのベンチマークを見ると、次のようになります。

ここに画像の説明を入力してください。

128KB以上のブロックで読み取りが完了するまで、ディスクは最高速度で順次読み取ることができないことがわかります。

Tomshardwareは、ストライプサイズの影響について非常に包括的なレビューを提供します。

http://www.tomshardware.com/reviews/RAID-SCALING-CHARTS,1735.html

おすすめ記事