ここでは、ブロックストレージのパフォーマンス基準、異なるブロックストレージデバイスのパフォーマンス、パフォーマンステスト方法、およびテスト結果の解釈方法を紹介します。
ブロックストレージのパフォーマンス基準
ストレージパフォーマンスの測定に関する主な基準は、IOPS、スループットおよびレイテンシです。
-
IOPS
IOPS (1 秒ごとのインプット/アウトプット操作) は、1 秒間に実行することができる書き込み操作または読み込み操作の数を参照します。 データベースなどの、トランザクション集約型アプリケーションは IOPS に影響を受けます。
測定される一般的なパフォーマンス特性は、以下のようになります。
IOPS のパフォーマンス特性 説明 IOPS の合計 1 秒あたりの I/O 操作の合計数 ランダムリード IOPS 1 秒あたりのランダムリード I/O 操作の平均回数 ストレージデバイスへのランダムアクセス ランダムライト IOPS 1 秒あたりのランダムライト I/O 操作の平均回数 シーケンシャルリード IOPS 1 秒あたりの平均シーケンシャルリード I/O 操作数 ストレージデバイスへのシーケンシャルアクセス シーケンシャルライト IOPS 1 秒あたりの平均シーケンシャルライト I/O 操作数 -
スループット
スループットは、 1 秒間に正常に転送されるデータサイズを測定します。
大規模な読み込みまたは書き込み操作を必要とするアプリケーション (Hadoop オフラインコンピューティングアプリケーションなど) はスループットの影響を受けます。
-
レイテンシ
レイテンシは、 I/O リクエストを完了させるために必要な時間です。
レイテンシに影響を受けるアプリケーション (データベースなど) は、高レイテンシによりパフォーマンスの低下やアプリケーションでのエラー報告が発生するため、SSD ディスク、SSD 共有ブロックストレージまたはローカル SSD ディスクの使用を推奨します。
スループットに影響を受けるアプリケーション (Hadoop オフラインコンピューティングなど) はあまりレイテンシの影響は受けません。"d1" または "d1ne" インスタンスタイプファミリーのインスタンスなどの、ローカル HDD を持った ECS インスタンスの使用を推奨します。
パフォーマンス
このセクションでは、さまざまなブロックストレージプロダクトのパフォーマンスについて説明します。
-
クラウドディスク
さまざまなタイプのクラウドディスクの機能と一般的なシナリオは、以下のようになります。パラメーター ESSD クラウドディスク SSD クラウドディスク Ultra クラウドディスク ベーシッククラウドディスク ディスク 1 つの容量 32,768 GiB 32,768 GiB 32,768 GiB 2,000 GiB 最大 IOPS 1,000,000 25,000* 5,000 数千 最大スループット 4,000 MBps 300 MBps* 140 MBps 30−40 MBps 1 つのディスクのパフォーマンスを計算する式** IOPS = min{1,800 + 50 × 容量, 1,000,000} IOPS = min{1,800 + 30 × 容量, 25,000} IOPS = min{1,800 + 8 × 容量, 5,000} N/A スループット = min{120 + 0.5 × 容量, 4,000} MBps スループット = min{120 + 0.5 × 容量, 300} MBps スループット = min{100 + 0.15 × 容量, 140} MBps N/A データ信頼性 99.9999999% 99.9999999% 99.9999999% 99.9999999% API 名 cloud_essd cloud_ssd cloud_efficiency cloud シナリオ - OLTP データベース: MySQL、PostgreSQL、Oracle および SQL Server などのリレーショナルデータベース
- NoSQL データベース: MongoDB、HBase および Cassandra などの非リレーショナルデータベース
- ElasticSearch 分散ログ: Elasticsearch、Logstash および Kibana (ELK) ログ解析
- MySQL、SQL Server、PostgreSQL および Oracle などの大規模および中規模なリレーショナルデータベース
- 高いデータ信頼性を必要とする大規模および中規模な開発またはテストアプリケーション
- MySQL、SQL Server、PostgreSQL などの小規模および中規模のリレーショナルデータベース
- 高いデータ信頼性および中程度のパフォーマンスを必要とする大規模および中規模な開発またはテストアプリケーション
- 少ない頻度のアクセス、または低 I/O を伴うアプリケーション 高い I/O パフォーマンスを必要とする場合、SSD ディスクの利用を推奨します。
- 低コストおよびランダムな読み書き I/O 操作を必要とするアプリケーション
* SSD クラウドディスクのパフォーマンスはデータブロックサイズにより異なります。 データブロックサイズが小さくなるほど、低いスループットおよび高い IOPS という結果になります。以下の表のようになります。 SSD クラウドディスクは、I/O 最適化インスタンスに接続された場合のみ想定されるパフォーマンスを達成できます。 言い換えると、SSD クラウドディスクは、I/O 最適化インスタンスに接続されなければ想定されるパフォーマンスを達成できません。
データブロックサイズ 最大 IOPS スループット 4 KiB 約 25,000 300 MBps を大幅に下回る 16 KiB 約 17,200 約 300 MBps 32 KiB 約 9,600 64 KiB 約 4,800 ** SSD クラウドディスクを例にとり、1 つのディスクのパフォーマンスを解説します。
- 最大 IOPS: ベースラインは 1,800 IOPSです。 ストレージ 1 GiB あたり 30 IOPS まで増加します。 最大 IOPS は 25,000 です。
- 最大スループット: ベースラインは 120 MBps です。 ストレージ 1 GiB あたり 0.5 MBps まで増加します。 最大スループットは 300 MBps です。
ランダム書き込みレイテンシはディスクカテゴリーによって異なり、以下のようになります。
- ESSD ディスク: 0.1−0.2 ms
- SSD ディスク: 0.5−2 ms
- Ultra クラウドディスク: 1−3 ms
- ベーシッククラウドディスク: 5−10 ms
-
共有ブロックストレージ
さまざまなタイプの共有ブロックストレージの機能と一般的なシナリオは、以下の表のようになります。
パラメーター SSD 共有ブロックストレージ Ultra 共有ブロックストレージ 容量 - シングルディスク: 32,768 GiB
- シングルインスタンス: 128 TiB
- シングルディスク: 32,768 GiB
- シングルインスタンス: 128 TiB
最大ランダムリード/ライト IOPS* 30,000 5,000 最大シーケンシャルリード/ライトスループット* 512 MBps 160 MBps 1 つのディスクのパフォーマンスを計算する式** IOPS = min{1,600 + 40 * 容量, 30,000} IOPS = min{1,000 + 6 * 容量, 5,000} スループット = min{100 + 0.5 * 容量, 512} MBps スループット = min{50 + 0.15 * 容量, 160} MBps シナリオ - Oracle RAC
- SQL Server
- フェールオーバークラスター
- サーバーの高可用性アーキテクチャ
- サーバーの高可用性アーキテクチャ
- 開発およびテストデータベースの高可用性アーキテクチャ
*上記の表に記載されている最大 IOPS およびスループットは、ストレステスト中に同時に 2 つ以上のインスタンスに接続された空の共有ブロックストレージデバイスの最大パフォーマンスです。
** SSD 共有ブロックストレージデバイスを例にとり、1 つのディスクのパフォーマンスを解説します。
- 最大 IOPS: ペースライン 1,600 IOPS です。 ストレージ 1 GiB ごとに 40 IOPS まで増加します。 最大 IOPS は 30,000 です。
- 最大スループット: ベースラインは 100 MBps です。 ストレージ 1 GiB あたり 0.5 MBps まで増加します。 最大スループットは 512 MBps です。
レイテンシは共有ブロックストレージのカテゴリーによって異なり、以下のようになります。
- SSD 共有ブロックストレージ: 0.5−2 ms
- Ultra 共有ブロックストレージ: 1−3 ms
-
ローカルディスク
ローカルディスクのパフォーマンスについては、『ローカルディスク』をご参照ください。
パフォーマンステスト
Linux インスタンスおよび Windows インスタンスの両方で、ブロックストレージパフォーマンスのテストには "FIO" ツールを推奨します。
このセクションでは、例として、Linux インスタンスで "FIO" ツールを使用したディスクパフォーマンステストの方法を解説します。 ディスクテストの前に、ディスクが 4 Kib 単位に揃えられていることを確認します。
-
ランダムライト IOPS のテスト
fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Write_Testing
-
ランダムリード IOPS のテスト
fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Read_Testing
-
ライトスループットのテスト
fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Write_PPS_Testing
-
リードスループットのテスト
fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Read_PPS_Testing
ランダムライト IOPS テスト用コマンドを例にとり、"FIO" コマンドのパラメーターの意味を解説します。以下の表のようになります。
パラメーター | 説明 |
---|---|
-direct=1 | テスト時に I/O バッファを無視します。 データは直接書き込まれます。 |
-iodepth=128 | AIO 使用時に、128 I/O リクエストまで同時に行うことができることを示しています。 |
-rw=randwrite | 読み書きポリシーがランダムライトであることを示しています。 他のオプションは以下のようになります。
|
-ioengine=libaio | テスト方法として "libaio" を利用します (Linux AIO, 非同期 I/O)。 通常、I/O を利用するアプリケーションには 2 つの方法があります。
|
-bs=4k |
1つの I/O に対するそれぞれのブロックサイズは 4 KiB であることを示しています。 指定しない場合、デフォルト値は 4 KiB が使用されます。 IOPS テスト時に、 スループットテスト時に、 |
-size=1G | テストファイルのサイズが 1 GiB であることを示しています。 |
-numjobs=1 | テストジョブの数は 1 です。 |
-runtime=1000 | テスト時間は 1,000 秒です。 指定しない場合、テストでは、-bs により指定されたデータブロックサイズで、ブロックごとに -size ブロックで指定されたファイルサイズのデータを書き込みます。
|
-group_reporting | テスト結果の表示モードです。 Group_reporting は、それぞれのジョブのすべての統計を表示する代わりに、それぞれのジョブの統計が集計されたことを意味します。 |
-filename=iotest | テストファイル名です。たとえば、"iotest" となります。 空のディスクをテストし、より正確なパフォーマンスデータを取得できますが、テストによりファイルシステムの構造は損傷します。 テスト前にお使いのデータをバックアップすることを確認してください。 |
-name=Rand_Write_Testing | テストタスクの名前です。 |