TS-932XのCrystalDiskMark・Readベンチがやたら速い件に関する考察

前回(快適10GbE環境に向けて -NAS編-)の続きのようなものです。

前回のおさらい

10GbE対応NASへのリプレイスということでTS-932Xを購入し、HDD4枚でRAID6を構成したボリューム等を作成しました。そしてCrystalDiskMark(以下CDM)でベンチマークかけたところ、Readの結果が10GbEの帯域マックスの1200[MB/s]強という値が出ており、流石にこれはおかしいと言うことで原因を探りました。

CDMベンチマーク結果

はじめに各ボリュームのCDMベンチ結果をFig.1に示します。上の表がRead、下の表がWriteになります。またHDD-RAID6のカッコ内の数値はHDDの本数になります。先の記事では4本にしていましたが、旧NASから1本引っこ抜いてRAID6グループに追加しましたので5本の時の値も載せておきます。

Fig.1 CDMのベンチマーク結果

Fig.1に示したように百歩譲ってSSDのRAID0ならありえなくはない数値ですがそれ以外は理論的にも出せない速度が出ています。RAID1構成のSSDでもSATA6Gの帯域から考えて最大600[MB/s]になるはずです。そもそもReadの値はどれもほとんど一致しており、その点からも共通のキャッシュか何かの値ではないかと思います。

Writeの値はそれなりに正しいかなと思います。シーケンシャル(Seq Q32T1)の値を見てみると、同じRAID6構成のHDDでも4本より5本のほうが1.5倍くらいの速いみたいですね。またディスク4本だと実際にデータをおける領域は半分になりますが、5本だと4本のときの1.5倍の領域を使うことができます。 HDD1台の容量を3[TB]とすると、HDD4本で6[TB]、5本で9[TB]になります。5ベイNASのほうがRAID6構成にしたときお得感(?)ありますね。

仮説と検証

さて前回のベンチマークを回している最中はCDMのウィンドウに注視していたので気が付きませんでしたが、ベンチマーク最中のTS-932XのディスクアクセスLEDがさっぱり点滅していないことに後々気が付きました。

Fig.2 ディスクアクセスLED

ディスクアクセスLEDはHDDやSSDに読み書き等何らかのデータをやり取りしている最中に点滅するもので、Fig.2中やや左側の「1,2,3,4,5,S1,S2」と緑色で点灯しているやつです。結局、HDD/SSDのどちらでもない場所にキャッシュされていることが考えられます。真っ先に考えられるのは容量的にもメインメモリしかないのでCDMによるベンチマーク中のメモリをリソースモニタで確認してみました。結果をFig.3に示します。

Fig.3 ベンチマーク中のRAM使用状況

Fig.3を見ると、ベンチマークを回し始めた直後にキャッシュ領域(黄色)が増加しています。どれくらい増えたのか詳細をFig.4 に示します。

Fig.4 ベンチ中の詳細データ

Fig.4 中の赤枠はベンチ前に詳細を確認したときのスクショでサイズは同じまま合成したものになります。これを見るとキャッシュ領域は5.1[%]から17.7[%]に増えています。RAM容量は7.84[GB]なので増加分は約989[MB]であり、CDMのテストサイズである1[GiB]と大体一致しています。

Readテストをするにはまずベンチ対象に何らかのデータが無いと測るものがないのではじめに指定テストサイズのデータを生成するのだと考えられます。そして生成されたテストデータがRAM上にキャッシュされ、Read速度測定はその後すぐ開始されるのでそのキャッシュデータがヒットし読み取られるのではないかと考えられます。

ここで新たな疑問が生じます。前回行った、エクスプローラ上でNASからPCへ10[GB]のファイルを転送したときには10GbEの帯域をフルに使うような速度は出ていませんでした。Fig.5 に前回のエクスプローラ上での測定結果を示します。

Fig.5 前回のエクスプローラ上でのファイル転送速度測定結果

その原因は単純に転送ファイルのサイズがキャッシュ領域より大きかったため溢れてしまったことだと考えられます。前回生成したファイルは10[GB]ですのでメインメモリの8[GB]を完全にオーバーしています。よってHDDやSSDから直接読み取られていると思われます。この仮説を検証するため、キャッシュに乗りきる1[GB]のファイルを生成し、一度NASのHDD(RAID6)へ転送した後すぐにNASからPCに転送したときの転送速度を測定しました。結果をFig.6に示します。

Fig.6 キャッシュが有効な場合のNAS->PC転送速度

10GbE上で1[GB]のファイルを転送したので、転送時間を計測するまもなく一瞬で終わってしまいましたがなんとかスクショを取りました。転送速度は約1[GB/s] = 8[Gb/s]であり、10GbEの帯域上限に近い値です。またFig.5に示したHDD-RAID6上に置いた10[GB]ファイルをPCへ転送したときの速度である256.41[MB/s]の4倍もの速度が出ていることからキャッシュが効いているものと考えられます。

結論

CDMベンチがやたら早かったのは生成されたテストファイルがRAM上にキャッシュされ、それを参照していたからだと結論づけました。

余談

ベンチマークを実際のファイル転送速度に近づけるためRAMへのキャッシュを無効にする方法を探したのですが、現状見つかっていません。また前回キャッシュを設定した覚えはないと書きましたが、デフォルトでEXT4遅延相当の書き込みキャッシュが有効になっていることに気が付きました。すみません。

Fig.7 デフォルトでONになっていた

一応Fig.7のチェックボックスを無効化してベンチを回してみましたが、転送速度もキャッシュの使用状況も変化がありませんでした。

PIC MAN

ソフトとハードの両方の目線を持てるようになりたいです.

4件のフィードバック

  1. 非論理 より:

    始めまして。
    丁度似た様な事を試している最中だったもので、いろいろ参考にさせて頂いております。
    (NASはASUSTOR製AS6508T、SWはH3C製S5800で10G×2)

    一点、関係の無いことを質問させてください。
    PC側に、PIC MANさんと同じHP製NC550SFPを用意したのですが、基板背面の左上にあるCR101という3端子の部品が破損していました。
    もし可能でしたら、表面に記載されている文字を教えて頂きたくお願いいたします。

    • PIC MAN より:

      >非論理さん
      閲覧頂きありがとうございます!
      AS6508Tも大容量で良いですね、LCDがついてる製品はサーバ感があってかっこいいです。
      さてNC550SFPのCR101に付きまして、手持ちの機材を見てみたところ「A7W」、さらに小さく横向きに「30」と書いてありました。少し検索してみたところSOT23サイズの2連ダイオードのようです。写真を撮りましたのでリンクを載せておきます(8MB位あります)。
      https://picman.dev/blog/wp-content/uploads/2020/03/DSC_4045_1_noEXIF-scaled.jpg
      参考になれば幸いです。

      • 非論理 より:

        お返事ありがとうございました。
        A7Wでしたら東芝のBAV99相当ですね。助かりました。

        実はSFP+モジュールが届いておらず、最終的な速度が測れておりません。💦
        近日、半田付けして、全部を繋いでみたいと思います。
        ほんとうにありがとうございました。

        • PIC MAN より:

          お役に立てて何よりです。SFP+モジュールの到着が待ち遠しいですね。
          非論理さんも良き10GbEライフを!

非論理 へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です