FANATIC REPORT ファナティックレポート

高速ストレージの性能(フラッシュデバイス利用時の注意点)

2016.10.04 お知らせ


フラッシュデバイスを使用した高速ストレージが普及しつつあります。

オールフラッシュにすれば性能が高くなりますが、すべてをフラッシュデバイスで構成するにはまだまだ容量単価が高いのが現実です。

実際には、キャッシュや記憶階層の一部としてフラッシュデバイスを使用し、性能向上を図っている場合も多いのではないでしょうか?

HDDとフラッシュデバイス(SATA接続SSD/NVMe)の一般的なスペック値の比較を表1に示しています。

デバイス単体であれば、フラッシュデバイスはHDDに対してデータ転送帯域(スループット)も、アクセスレイテンシ(IOPSの逆数)も高速です。

 

表1. 各デバイス比較

スループット IOPS 容量 接続
HDD ~200MB /s ~100 ~10TB SAS/SATA 6/12G接続
SSD ~500MB /s ~85000 ~1.6TB SATA 6G接続
NVMe ~3000MB /s ~4500000 ~2TB PCI Express(x4)接続

 

しかし、ストレージにフラッシュデバイスを追加したから速くなるだろうと思っていたのにかえって性能が低下してしまったという経験はありませんか?

ディスクキャッシュや記憶域階層にフラッシュデバイスを使用した場合、
性能向上のためには

  1. アクセス・レイテンシ(遅延)が短い
  2. スループット(転送帯域)が大きい

ことが求められます。
いずれかしか実現されないと、特定のアクセス時にしか性能は向上しません。

以下にフラッシュデバイスをキャッシュとして追加した構成でのデータの流れを示します。
(HDD:RAID5やRAID6等のストライピング構成)

データはHDD → RAIDコントローラ → PCI Expressインタフェース → CPUチップの流れで主記憶メモリに格納され、実際の処理に使用されます。

取り出したデータは、再利用のため逆の経路でRAIDコントローラ配下のSSDに格納されます。
再利用の際には、このSSDから同じ経路を使って読み出されます。

 

図1. SSD(SATA接続)をディスクキャッシュに利用

高速ストレージの性能(フラッシュデバイス利用時の注意点)-図1

 

HDD1本あたりのスループットは150~200MB/s程度ですが、RAIDコントローラやHBAを使用して多数のHDDをストライピングすれば、ボリューム全体で数GB/sのスループットを実現することができます。

一方、SATA接続のSSDの場合はレイテンシは数ケタ短縮されるものの、スループットは単体500MB/s程度に留まります。

このためスループットではストライピングしたRAIDディスクボリュームに大きく及びません。
帯域を必要とせず、また頻繁に使用するデータ量が限られているケース以外では、SSDの追加がかえって性能低下を招くことになります。

PCI Express接続のNVMeを使用した場合、スループット・レイテンシは改善しますが、HDDの数が20台以上のRAID構成ではスループットにおいてNVMeがボトルネックになります。

 

図2. NVMeをディスクキャッシュまたは記憶域階層に利用

高速ストレージの性能(フラッシュデバイス利用時の注意点)-図2

図2の構成でWindows Server 2012 R2の記憶域階層を利用した場合のベンチマークを実施しました。

 

図3. 記憶域階層

高速ストレージの性能(フラッシュデバイス利用時の注意点)-図3

 

実行環境

  1. OS Windows Server 2012 R2
  2. 記憶域階層:Tier1 NVMe(PCIex4接続) 2TB
  3. 記憶域階層:Tier2 SATA-HDD36台 RAID50
  4. RAIDコントローラ:12Gbps対応

ベンチマーク条件

  1. ベンチマーク … SQLIO
  2. データサイズ … 256GB ※ベンチでアクセスする領域
  3. ブロックサイズ … 4KB、64KB、256GB、1MB ※アクセス単位のサイズ
  4. アクセスパターン … シーケンシャルRead/Write、ランダムRead/Write

評価ケース

  1. HDDのみの構成
  2. NVMeのみの構成
  3. 記憶域階層 Tier1:NVMe、Tier2:HDD-RAID

(頻繁にアクセスするデータはNVMe)

各評価ケースで比較したところ、以下のような結果になりました。

高速ストレージの性能(フラッシュデバイス利用時の注意点)-グラフ1

高速ストレージの性能(フラッシュデバイス利用時の注意点)-グラフ2

高速ストレージの性能(フラッシュデバイス利用時の注意点)-グラフ3

高速ストレージの性能(フラッシュデバイス利用時の注意点)-グラフ4

以上のベンチマークの結果からは

  1. 記憶域階層とNVMeのみの性能はほぼ同等
  2. 大ブロックサイズのアクセスではHDDの性能が5GB/sを超える高い値を示す
  3. 小ブロックサイズでは記憶域階層、NVMeが優位(レイテンシが短い効果)

が読み取れます。

すなわち、データベースシステム等の小ブロックサイズアクセス中心のシステムでは記憶域階層を利用することで性能向上するものの、画像ファイル等のブロックサイズの大きいアクセス中心のシステムではかえって性能低下する傾向にあります。

上記では3つのケース比較実行するためデータサイズをNVMe(2TB)に収まる256GBで実行しています。
このため記憶域階層でのアクセスがほぼNVMeへのアクセスに収まってしまったようです。

次に実運用を想定し記憶域階層でのデータサイズをNVMeに収まらない8TBにして比較してみました。

高速ストレージの性能(フラッシュデバイス利用時の注意点)-グラフ5

高速ストレージの性能(フラッシュデバイス利用時の注意点)-グラフ6

ランダムアクセスでは、特に小ブロックサイズアクセスで性能が大幅に低下します。

広い記憶域領域にアクセスする場合、小ブロックサイズアクセスではHDDのレイテンシが、大ブロックサイズアクセスではNVMeのスループットが制限を受けることになり、結果NVMeのメリットを享受できない可能性があります。
今回のようなケースでフラッシュデバイスの効果を出すためにはNVMeを複数使用した方がよいでしょう。

すなわち、NVMeをストライピング構成にして、Tier1側のスループットをTier2のHDD-RAID以上にする事で常に性能向上が図れます。

以上のように、フラッシュデバイスを利用する場合は利用状況に応じてスループット、レイテンシが適切に改善される使い方になるよう注意が必要です。

ストレージについて、性能、ストレージ容量、コストなどのトレードオフで悩まれている方はぜひ弊社までご相談ください。

関連コンテンツ

ファナティック StorageServer特集ページ

高速ストレージ特集ページ

お問い合わせはこちら