web-dev-qa-db-ja.com

LSI RAID:書き込みキャッシュポリシーは読み取りパフォーマンスに影響しますか?

私は、LSI MegaRAID SAS 9260-4iコントローラー、3 x 2のRAID-5 TBディスクを備えたサーバーを持っています。いくつかのパフォーマンステストを行いました(iozone3 )と数値は、書き込みキャッシュポリシーが読み取りパフォーマンスにも影響することを明確に示しています。ポリシーをWriteBackに設定すると、WriteThroughに比べて読み取りパフォーマンスが約2倍になります。書き込みキャッシュが読み取りパフォーマンスにどのように影響する可能性がありますか?

セットアップの詳細は次のとおりです。

megacli -LDInfo -L0 -a0

Adapter 0 -- Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name                :
RAID Level          : Primary-5, Secondary-0, RAID Level Qualifier-3
Size                : 3.637 TB
Is VD emulated      : Yes
Parity Size         : 1.818 TB
State               : Optimal
Strip Size          : 512 KB
Number Of Drives    : 3
Span Depth          : 1
Default Cache Policy: WriteThrough, ReadAhead, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteThrough, ReadAhead, Direct, No Write Cache if Bad BBU
Default Access Policy: Read/Write
Current Access Policy: Read/Write
Disk Cache Policy   : Disabled
Encryption Type     : None
Bad Blocks Exist: No
Is VD Cached: No

WriteBackを有効にした場合(その他はすべて変更されません):

Default Cache Policy: WriteBack, ReadAhead, Direct, Write Cache OK if Bad BBU
Current Cache Policy: WriteBack, ReadAhead, Direct, Write Cache OK if Bad BBU

Iozone3からのいくつかの数値:

 WriteThrough:
                                                    random  random
      KB  reclen   write rewrite    read    reread    read   write
 2033120      64   91963   38146   144980   139122   11795   21564
 2033120     128   83039   90746   118660   118147   21193   33686
 2033120     256   78933   40359   113611   114327   31493   51838
 2033120     512   71133   39453   131113   143323   28712   60946
 2033120    1024   91233   76601   141257   142820   35869   45331
 2033120    2048   58507   48419   136078   135220   51200   54548
 2033120    4096   98426   70490   119342   134319   80883   57843
 2033120    8192   70302   63047   132495   144537  101882   57984
 2033120   16384   79594   29208   148972   135650  124207   79281

 WriteBack:
                                                    random  random
      KB  reclen   write rewrite    read    reread    read   write
 2033120      64  347208  302472   331824   302075   12923   31795
 2033120     128  354489  343420   292668   322294   24018   45813
 2033120     256  379546  343659   320315   302126   37747   71769
 2033120     512  381603  352871   280553   322664   33192  116522
 2033120    1024  374790  349123   289219   290284   43154  232669
 2033120    2048  364758  342957   297345   320794   73880  264555
 2033120    4096  368939  339926   303161   324334  128764  281280
 2033120    8192  374004  346851   303138   326100  186427  324315
 2033120   16384  379416  340577   284131   289762  254757  356530

システムに関するいくつかの詳細:

  • Ubuntu 12.04
  • 64ビット
  • カーネル3.2.0(3.2.0-58-generic)
  • テスト用のメモリは1 GBに制限されていました
  • iozone3バージョン397-2
  • テストに使用されるパーティション:/dev/sda4 /var ext4 rw,relatime,user_xattr,barrier=1,data=ordered 0 0
6
tlo

ライトバックキャッシュを使用すると、ディスクIOPSを節約できます。コントローラは、小さな書き込みを1つの大きな書き込みにまとめることができます。

したがって、読み取りに使用できるIOPSが増えます。

これは、テストが並行していることを前提としています。特定のテストが読み取りのみまたは書き込みのみの場合、これは問題になりません。

4
Dan Pritts

このテストはどのファイルシステムで実行されますか?

頭に浮かぶのは時です。ファイルシステムがatimeオプションでマウントされている場合、またはno/relatimeマウントオプションがない場合、読み取りごとに書き込みが行われます。

(atimeはファイルの最終アクセス時刻を記録することを意味します)

の出力を投稿すると役立つ場合があります

mount

テストを行ったデバイスを指定します。

2
Hanno S.

ライトバックポリシーdoは、iozoneなどのテストを使用する場合、以前に書き込んだデータを読み取ることで読み取りパフォーマンスを測定するため、赤のパフォーマンスに影響を与えます。したがって、iozoneが読み取りテストを開始しても、一部のデータはまだキャッシュにあるため、読み取りスループットが大幅に向上します。 RAIDアダプタはファイルやファイルシステムさえも認識していないため、これはファイルのサイズに関係ありません。知っているのはIOとブロックだけです。 iozonrはfsベンチマークツールであり、ハードウェアを完全に抽象化することを覚えておいてください。おそらく-J/-Yを使用すると、ライトバックポリシーの影響を軽減して、読み取りパフォーマンスのアイデアを得ることができます...または、真のHDDベンチツール(hdparm?)

2
alxgomz

最も明らかな理由は、読み取りがディスク自体ではなくキャッシュから行われるためです。 WriteBackを使用すると、書き込まれたデータは、RAIDコントローラーがディスクに書き込む機会を得る/決定するまで、キャッシュに保持されます。ただし、同じデータ(またはキャッシュに保持されているもの)が読み取られた場合は、比較的コストのかかるディスク読み取りを行うのではなく、キャッシュを使用してデータを取得します。

1
GeoSword

ファイルが書き込まれているときに、ディスク上の連続したブロックとして書き込まれている可能性があります。

以前のソリューションで考慮されていなかったことの1つは、コントローラーでのライトバックコマンドとライトスルーコマンドの処理方法の違いです。

ライトバックとは、コントローラーがコマンドを受信すると、すぐにOSハンドラーに「問題がない」ことを伝え、次のハンドラーに渡すことを意味します。 Write-Thoughは、次のクエリを処理する前に、個々のコマンドが成功を報告するのを待ちます。

その結果、コマンドはより速くキューに入れられます。次に、アレイの先読み設定により、連続的なデータストリームがキャッシュに読み込まれます。

特に小さいチャンクサイズで先読みブーストをほとんど削除するランダム書き込みイベントとランダム読み取りイベントの間の非常に小さなパーセンテージの違いを見ると、より速いコマンドキューを使用した先読みがかなり役立つことがわかります。

パフォーマンスに影響を与える可能性があるもう1つの要素は、各読み取りまたは書き込み操作に関与するヘッドの数に対するスライスサイズとブロックサイズです。

1
Rowan Hawkins