インスタンスストア(i2,d2)と新型EBS(st1,sc1)の性能を比較してみた

2016.04.21

はじめに

AWSのEC2では一部のインスタンスタイプ(t2,c4,m4など)を除き、 仮想ホストの物理筐体に内蔵されているHDD、SSDをインスタンスストア(エフェメラルディスク)として利用する事ができます。

先日、シーケンシャルアクセス性能と、コストパフォーマンスに優れたEBSのリリースがありました。

大容量のHDDをインスタンスストアを有す「d2.xlarge」(2TBのHDD、3台)で構成された6GBと、 6TBのEBSを利用するEC2構成、CPUとメモリスペックが同一な「r3.xlarge」、 CPU、帯域性能に優れる「c4.2xlarge」を採用した場合の月額費用、 まとめた結果は以下のとおりでした。

EC2インスタンス CPUコア数 メモリ(GB) EBS最大帯域(GB) ディスク種別 ストレージ容量 EC2費 EBS費 合算(EC2+EBS)
d2.xlarge 4 30.5 93.75 Ephemeral 6TB $633.00 $1.00 $634.00
r3.xlarge 4 30.5 62.5 st1 6TB $299.25 $325.00 $624.25
r3.xlarge 4 30.5 62.5 sc1 6TB $299.25 $181.00 $480.25
r3.xlarge 4 30.5 62.5 gp2 6TB $299.25 $721.00 $1,020.25
c4.2xlarge 8 15 125 st1 6TB $399.25 $325.00 $724.25
c4.2xlarge 8 15 125 sc1 6TB $399.25 $181.00 $580.25
c4.2xlarge 8 15 125 gp2 6TB $399.25 $721.00 $1,120.25

先日リリースされた新しいEBS(st1、sc1)により、ストレージ容量あたりの単価としては、 「d2」のインスタンスストアを利用した場合より、EBSが廉価になるケースがある事がわかりました。

今回、ストレージとしてのIO性能などを含めた比較を実施するため、 「d2.xlarge」のインスタンスストアの性能測定を実施しました。

また、高いIO性能が期待できるとされている、「i2」のSSDベースのインスタンスストア性能についても、 この機会に測定できましたので、あわせて紹介させていただきます。

比較イメージ

* EC2を利用した分散ストレージの、ノード単体性能評価を試みました

compare-ephemeral-ebs-02

検証環境

EC2インスタンス

  • d2.xlarge:
    • CPU: 4コア
    • Mem: 30.5GB
    • インスタンスストア: HDD(2TB)×3
    • EBS最適化済
  • i2.xlarge
    • CPU: 4コア
    • Mem: 30.5GB
    • インスタンスストア: SSD(800GB)×1
  • c4.2xlarge:
    • CPU: 8コア
    • Mem: 15GB
    • インスタンスストア: なし
    • EBS最適化済
    • EC2のスケールアップによる、帯域拡張効果の確認に利用

測定手順

結果

インスタンスストアのディスク性能

  • 「d2」の測定は2回実施しています
    • 2TBのHDD単体
    • Windows2012の記憶域スペースを利用し、シンプル、Raid0相当のストライピング
EC2インスタンス ディスク種別 Sequential Read Sequential Write Random Read 4KiB Random Write 4KiB
d2.xlarge (HDD:2TB x 1) 171.071 MB/s 167.629 MB/s 372.8 IOPS 341.6 IOPS
d2.xlarge (HDD:2TB x 3) 500.277 MB/s 486.582 MB/s 1014.2 IOPS 945.8 IOPS
i2.xlarge (SSD:0.8TB x1) 466.218 MB/s 417.005 MB/s 58758.1 IOPS 56664.6 IOPS

EBS性能

  • 比較対象とするため、インスタンスストア性能測定に利用した「d2.xlarge」環境にEBSをアタッチし測定を実施しました。
EC2インスタンス ディスク種別 Sequential Read Sequential Write Random Read 4KiB Random Write 4KiB
xlarge st1(2TB) 94.411 MB/s 94.236 MB/s 525.9 IOPS 524.9 IOPS
xlarge st1(6TB) 94.208 MB/s 94.205 MB/s 535.9 IOPS 535.9 IOPS
xlarge sc1(2TB) 94.223 MB/s 94.231 MB/s 168.2 IOPS 167.7 IOPS
xlarge sc1(6TB) 93.602 MB/s 94.187 MB/s 268.3 IOPS 268.3 IOPS
xlarge gp2(2TB) 94.198 MB/s 94.153 MB/s 5968.3 IOPS 5964.4 IOPS
2xlarge st1(2TB) 125.359 MB/s 125.394 MB/s 524.9 IOPS 524.9 IOPS
2xlarge st1(6TB) 126.040 MB/s 125.410 MB/s 168.7 IOPS 166.5 IOPS
2xlarge sc1(2TB) 125.577 MB/s 125.662 MB/s 536.9 IOPS 534.7 IOPS
2xlarge sc1(6TB) 125.393 MB/s 125.665 MB/s 268.3 IOPS 267.3 IOPS
2xlarge gp2(2TB) 125.434 MB/s 125.600 MB/s 5935.1 IOP 5941.2 IOPS

アクセス比較

シーケンシャル性能、ランダムアクセス性能とも、インスタンスストアは「d2」「i2」とも、EBSと比較して数倍の性能がでました。

6TBのEBS、st1は500MB/s、sc1も250MB/sの最大性能に対し、今回はEC2の帯域(xlarge:93.75MB/s)がボトルネック。 インスタンスのスペックアップ(xlarge→2xlarge)による帯域拡張で、シーケンシャル性能の向上(94→125)が確認できました。 インスタンスストアもインスタンスのスペックアップにより、ディスクのストライピングなどによるIO性能向上が期待できるため、 一定の性能差は存在し続ける事と考えれます。

コスト比較

1ノード費用計算

  • コストパフォーマンスの比較のため、EC2環境を分散ストレージの1ノードに見立てました。
  • EBSをデータ領域とする場合、CPU、メモリは同等のr3.xlargeを利用すると仮定しました。
  • 750時間を月間稼働時間とし、ノードの月額費用を求めました。
EC2インスタンス ディスク種別 ストレージ容量 EC2費用 EBS費用 ノード費用(EC2+EBS)
d2.xlarge Ephemeral 6TB $633.00 $1.00 $634.00
r3.xlarge st1 6TB $299.25 $325.00 $624.25
r3.xlarge sc1 6TB $299.25 $181.00 $480.25
r3.xlarge gp2 6TB $299.25 $721.00 $1,020.25
i2.xlarge Ephemeral 0.8TB $765.75 $1.00 $766.75

容量比較

  • データ用ストレージ容量をノードの月額費で按分し、1ドルあたりのストレージ容量を求めました。
EC2インスタンス ディスク種別 ストレージ容量 ノード(EC2+EBS)費用 1$あたりのストレージ容量(GB)
d2.xlarge Ephemeral 6TB $634.00 $9,463.72
r3.xlarge st1 6TB $624.25 $9,611.53
r3.xlarge sc1 6TB $480.25 $12,493.49
r3.xlarge gp2 6TB $1,020.25 $5,880.91
i2.xlarge Ephemeral 0.8TB $766.75 $1.04

シーケンシャルアクセス比較

  • シーケンシャルアクセス性能をノードの月額費で按分し、1ドルあたり利用できるストレージ帯域を求めました。
EC2インスタンス ディスク種別 Sequential Read(MB/s) ノード(EC2+EBS)費用 1$あたりのシーケンシャルアクセス性能(MB/s)
d2.xlarge Ephemeral 500.277 $634.00 0.79 MB/s
r3.xlarge st1 94.208 $624.25 0.15 MB/s
r3.xlarge sc1 93.602 $480.25 0.19 MB/s
r3.xlarge gp2 94.198 $1,020.25 0.09 MB/s
i2.xlarge Ephemeral 466.218 $766.75 0.61 MB/s

ランダムアクセス比較

  • ランダムアクセス性能をノードの月額費で按分し、1ドルあたり利用できるストレージ性能(IOPS)帯域を求めました。
EC2インスタンス ディスク種別 Random Read 4KiB(IOPS) ノード(EC2+EBS)費用 1$あたりのストレージ性能(IOPS)
d2.xlarge Ephemeral 1014.2 $634.00 1.60 IOPS
r3.xlarge st1 535.9 $624.25 0.86 IOPS
r3.xlarge sc1 268.3 $480.25 0.56 IOPS
r3.xlarge gp2 5968.3 $1,020.25 5.85 IOPS
i2.xlarge Ephemeral 58758.1 $766.75 76.63 IOPS

まとめ

物理ホストに直結されたインスタンスストア、高いIO性能を低コストで利用できる事から、 揮発ストレージとしての活用が有効性は高いと考えられました。

一方、アーカイブ用途としての永続性を必要とする場合、EBSの利便性、信頼性、耐障害性などの非機能要件や、 EC2環境の柔軟性、ワークロードに応じた適切なCPU、メモリ、帯域の選択が増える事を考慮すると、 新型のEBS(sc1、st1)の適正が高くなるケースも多いと思われます。

今回の検討、分散ストレージとしては小規模なノード数は一桁、数十TB程度の環境を想定した内容でしたが、 用途用法に応じた最適なアーキテクチャ、引き続き検討していきたいと思います。