Azure VM のディスク性能ですが、Windows Azure 仮想マシンで SQL Server ワークロードを実行する際に知っておくべき 10 のこと に以下のように記載されています。
8 KB IO で読み取り/書き込みの割合が 60/40 のワークロードの場合、ディスク 1 台あたり最大 500 IOPS が目標ラインです。これを上回る数字が必要な場合は、データ ディスクを追加して、データベース ワークロードを分散してください。大規模なデータベースを作成または復元する際は、ファイルの瞬時初期化の機能を使用してパフォーマンスの向上を図ってください。
また、Virtual Machine and Cloud Service Sizes for Windows Azure の表にも、最大 500IOPS という記載があります。
この 500IOPS ですが、キャッシュが無効になっている際の性能のようですね。
SQLIO を使用して読み取りと書き込みのキャッシュが無効になっているディスク 1個に対して限界まで負荷をかけた時の IO 性能が以下になります。上限が 500IOPS となっています。
8KB | 64KB | |||||||
Sequential Read |
Sequential Write |
Random Read |
Random Write |
Sequential Read |
Sequential Write |
Random Read |
Random Write |
|
IOPS |
495.33 |
495.51 |
496.10 |
492.35 |
491.91 |
495.30 |
495.85 |
496.33 |
MB/sec |
3.86 |
3.87 | 3.87 | 3.84 | 30.74 | 30.95 | 30.99 | 31.02 |
Performance Guidance for SQL Server in Windows Azure Virtual Machines に記載されているディスク性能が以下になります。上記のドキュメントの結果は SQLIO で 10GB のファイルに対して 3分実行しており、自分で検証したのは 1GB のファイルに対して 1 分間の負荷なので多少違いは出ていますが、同程度の性能になっていますね。
# 当たり前といえば当たり前なのですが…。
ディスクを 2 個に増やして、それぞれのドライブに対して IO をかけた結果がこちらになります。きちんと倍になっていますね。
# ディスクをストライピングで束ねた状態でも似たような結果になりました。
8KB | 64KB | |||||||
Sequential Read |
Sequential Write |
Random Read |
Random Write |
Sequential Read |
Sequential Write |
Random Read |
Random Write |
|
IOPS |
989.74 |
987.80 |
989.18 |
992.41 |
991.55 |
985.40 |
991.61 |
946.68 |
MB/sec |
7.73 |
7.71 |
7.72 |
7.75 |
61.97 |
61.58 |
61.97 |
59.16 |
インスタンスのサイズを上げれば、最大で 16 ディスクまで接続できますのでリニアに IOPS はあげられそうですね。