ディスクのパフォーマンス特性を理解する

完了

アプリケーションのパフォーマンスは、多くの場合、アプリケーションがデータの読み取りと書き込みを行う速度に依存します。 アプリケーションのパフォーマンスを向上するには、まずパフォーマンスの測定方法を理解する必要があります。 その後、測定に影響を与える設定と選択肢を理解します。

ディスクのパフォーマンス特性

適切なディスクの種類を選択するには、パフォーマンス指標について理解しておくことが重要です。 パフォーマンスは次の指標で表されます。

  • IOPS - 1 秒あたりの入出力操作: 1 秒間にアプリケーションからディスクに送信される要求の数。これは、アプリケーションのパフォーマンスに直接影響します。 小売 Web サイトなどの一部のアプリケーションでは、サイトの応答性を維持するうえで迅速に処理する必要がある小さくてランダムな入出力 (I/O) 要求すべてを管理するために、高い IOPS が必要です。 ハイ パフォーマンスなディスクほど、IOPS の値が高くなります。
  • スループット: スループットは、指定された期間にアプリケーションがディスクに送信するデータの量です。 スループットは、"データ転送速度" とも呼ばれ、MB/秒の単位で測定されます。 アプリケーションが大量のデータ ブロックで I/O を実行している場合は、高スループットが必要です。 ハイ パフォーマンスなディスクほど、スループットが高くなります。
  • 待ち時間: 待ち時間は、アプリが要求をディスクに送信して応答を受信するのにかかる時間を表します。 待ち時間により、有効な IOPS に制限が加えられます。 たとえば、ディスクは 5,000 IOPS を処理できても、各操作の処理に 10 ミリ秒かかる場合、この処理時間のために、アプリの操作数の上限は 1 秒あたり 100 回になります。 ReadOnly ホスト キャッシュを有効にすると、待ち時間が大幅に改善されます。

IOPS とスループット

スループットと IOPS には直接的な関係があります。 一方を変更すると、もう一方に直接影響が及びます。 スループットの理論上の制限は、式 "IOPS × I/O サイズ = スループット" から求めることができます。 アプリケーションを計画する場合は、これらの両方の値を考慮することが重要です。

Ultra Disks と Premium SSD v2 マネージド ディスクの場合は、ディスク サイズ、IOPS、スループットを個別に調整できるため、動作は少し異なります。 Ultra Disks と Premium SSD v2 マネージド ディスクの IOPS またはスループットは、実行時にディスクを仮想マシン (VM) からデタッチせずに調整できます。

Ultra Disk の IOPS

Ultra Disk は、300 IOPS/GiB の IOPS 制限をサポートし、ディスクあたり最大 160,000 IOPS をサポートします。 ディスクの目標 IOPS を達成するには、選択したディスクの IOPS が VM の IOPS 制限未満であることを確認してください。

現在、一般提供されているサイズの 1 つの VM の IOPS の上限は 160,000 です。 IOPS がさらに大きい Ultra ディスクは、複数の VM をサポートする共有ディスクとして使用できます。

ディスクあたりに保証されている最小 IOPS は 1 IOPS/GiB で、全体のベースラインの最小値は 100 IOPS です。 たとえば、4 GiB の Ultra Disk をプロビジョニングした場合、そのディスクの最小 IOPS は 4 ではなく 100 です。

Ultra Disk のスループット

1 つの Ultra Disk のスループットは、プロビジョニングされた IOPS ごとに 256 KiB/秒に制限され、ディスクあたり最大 4000 MB/秒 に制限されます (MB/秒 = 秒あたり 10^6 バイト)。 ディスクあたりで保証される最小スループットはプロビジョニングされた IOPS ごとに毎秒 4 KiB で、全体的ベースラインは最小 1 MB/秒 です。

Premium SSD v2 の IOPS

すべての Premium SSD v2 ディスクのベースライン IOPS は 3000 で、無料です。 6 GiB を超えると、ディスクの最大 IOPS は GiB あたり 500 の割合で、最大 80,000 IOPS まで増やすことができます。 そのため、8 GiB ディスクでは最大 4,000 IOPS、10 GiB では最大 5,000 IOPS が可能です。 あるディスクに 80,000 IOPS を設定できるようにするには、そのディスクに少なくとも 160 GiB が必要です。 IOPS が 3,000 を超えると、ディスクの価格が上がります。

Premium SSD v2 のスループット

すべての Premium SSD v2 ディスクのベースライン スループットは 125 MB/秒で、無料です。 6 GiB を超えると、設定できる最大スループットは、セット IOPS あたり 0.25 MB/秒増加します。 ディスクの IOPS が 3,000 の場合、設定できる最大スループットは 750 MB/秒です。 このディスクのスループットを 750 MB/秒を超えて引き上げるには、その IOPS を増やす必要があります。 たとえば、IOPS を 4,000 に増やした場合、設定できる最大スループットは 1,000 になります。 5,000 IOPS 以上のディスクでサポートされる最大スループットは 1,200 MB/秒です。 スループットが 125 MB/ 秒を超えると、ディスクの価格が上がります。

仮想マシンの I/O 上限

Azure で使用できるディスクを確認した後は、各 VM に合う適切なディスクの種類を選ぶ必要があります。 VM には独自のストレージ IOPS 制限があり、ディスク IOPS との組み合わせによってアプリケーション全体のパフォーマンスが影響を受ける可能性があります。

アプリケーションが必要とするストレージ パフォーマンスに適した VM のサイズを設定しないと、VM 自体がボトルネックになります。

たとえば、アプリケーションが 15,000 IOPS を必要とする要求を行うとします。 P30 OS ディスク 1 台と、P40 SKU を備えた Premium SSD データ ディスク 2 台で、Standard_D8s_v3 VM をプロビジョニングしました。 各データ ディスクは、7,500 IOPS を処理でき、最終的にはアプリケーションの要求を満たすことができます。 ただし、VM 自体の上限は 12,800 IOPS であり、これがアプリケーションで実際に取得される IOPS です。 この例を次の図に示します。

仮想マシンの入出力上限を示す図。

前の例で示したシナリオは、"VM の I/O 上限" と呼ばれます。 このシナリオでは、アプリケーションはディスクで管理できるスループットと IOPS の量を要求していますが、VM はこれらの要件を満たすことができません。

VM の I/O 上限によって発生するパフォーマンスの問題は、次のメトリックを使用して診断できます。

  • VM のキャッシュされた IOPS の消費率
  • VM のキャッシュされた帯域幅の消費率
  • VM のキャッシュされていない IOPS の消費率
  • VM のキャッシュされていない帯域幅の消費率

ディスクの I/O 上限

ストレージ ソリューションがアプリケーションの要求を満たさない他の状況に遭遇することがあります。 ただし、ディスクに対して不適切なパフォーマンス レベルを選択すると、ボトルネックが発生する可能性があります。

アプリケーションが VM に対して 15,000 IOPS を必要とする同じ例で、次の設定を選択したとしましょう。

  • 25,600 IOPS の Standard D16s_v4
  • 2,300 IOPS の P20 OS ディスク
  • それぞれ 5,000 IOPS をサポートする 2 台の P30 データ ディスク

このシナリオでは、アプリケーションの要求は、次の 3 つの異なる要求に分けられます。

  • OS ディスクから 2,300 IOPS が要求されます
  • 各データ ディスクから 5,000 IOPS が要求されます

VM からアプリケーションに返される合計 IOPS は、OS ディスクとデータ ディスクによって提供される各 IOPS の合計である 12,300 になります。

このシナリオは、ディスク自体がアプリケーションの要求を満たすことができない場合に、"ディスクの I/O 上限" と呼ばれます。

ディスクの入出力上限を示す図。

ディスクの I/O 上限を診断するには、次のメトリックを使用します。

  • データ ディスク IOPS の消費率
  • データ ディスク帯域幅の消費率
  • OS disk IOPS consumed percentage (OS ディスク IOPS の消費率)
  • OS ディスク帯域幅の消費率

ディスク キャッシュ

キャッシュは、アプリケーションがより迅速にデータにアクセスできるように、通常はデータをメモリ内に格納する特殊なコンポーネントです。 キャッシュ内のデータは、多くの場合、以前に読み取られたデータであるか、前の計算から得られたデータです。 その目的は、アプリケーションがディスクからよりもキャッシュからデータにより速くアクセスすることです。 ディスク キャッシュは、Ultra Disks と Premium SSD v2 では使用できません。

キャッシュでは、永続的なストレージと比較してより高速な読み取りおよび書き込みパフォーマンスが得られる、特殊な、場合によってはコストが高い一時ストレージが使用されます。 キャッシュ ストレージは限られていることが多いため、キャッシュのメリットが最も大きいデータ操作を決定しておく必要があります。 ただし、Azure のようにキャッシュを幅広く利用できる場合であっても、使用するキャッシュの種類を判断する前に各ディスクのワークロード パターンを把握しておくことは重要です。

読み取りキャッシュでは、データ取得の高速化が試行されます。 アプリケーションは、永続的なストレージから読み取る代わりに、より高速なキャッシュからデータを読み取ります。

読み取りキャッシュは、一連の連続読み取りなど、読み取るキューに "予測可能性" がある場合に役立つ点に注意することが重要です。 ランダム I/O の場合、アクセスしているデータがストレージ全体に分散しているため、キャッシュのメリットはほとんどまたはまったくありません。さらに、ディスクのパフォーマンスが低下する可能性さえあります。

書き込みキャッシュでは、永続的ストレージへのデータ書き込みの高速化が試行されます。 書き込みキャッシュを使用すると、アプリは保存する必要があるデータを考慮できます。

実際には、書き込みキャッシュを使うと、データはキャッシュのキューに入れられ、ディスクに書き込まれるのを待ちます。 ご想像のとおり、たとえば、キャッシュされたデータが書き込まれる前にシステムがシャットダウンした場合のように、このメカニズムは障害点になる可能性があります。 SQL Server などの一部のシステムでは、キャッシュ データを永続ディスク ストレージに書き込むタスクをシステム自体で管理します。

VM のキャッシュの有無による制限

キャッシュによってディスク上のデータの読み取りまたは書き込みのパフォーマンスがどのように向上するかを学習しました。次に、キャッシュが VM のパフォーマンスにどのように影響するかを見てみましょう。

VM のパフォーマンスは、VM のサイズに基づいて適用される IOPS とスループットの制限に依存します。 Premium レベルのすべての VM には、キャッシュがある構成とキャッシュがない構成に基づいて、IOPS とスループットに関して異なる制限があります。 VM ホストのキャッシュを有効にすることで、VM のパフォーマンスを向上させ、IOPS とスループットに対するより高い要求を満たすことができます。

次の表に、キャッシュがあるディスクとキャッシュがないディスクのスループットと帯域幅のパフォーマンスの違いを示す例を示します。

VM サイズ名 キャッシュが有効な場合および一時ストレージの最大スループット IOPS/MB/秒 (キャッシュ サイズは GiB 単位) キャッシュがないディスクの最大スループット IOPS/MB/秒
Standard_D2s_v3 4,000/32 (50) 3,200/48
Standard_D4s_v3 8,000/64 (100) 6,400/96
Standard_D8s_v3 16,000/128 (200) 12,800/192
Standard_D64s_v3 128,000/1,024 (1,600) 80,000/1,200

ホスト キャッシュは、VM のボトルネック シナリオを回避するのに役立ちます。

前の VM の I/O 上限の例では、アプリケーションは 15,000 IOPS を必要としていました。 どちらのデータ ディスクもその要求を処理できますが、Standard_D8s_v3 VM は、キャッシュのない状態で 12,800 IOPS しか提供できません。

Standard_D8s_v3 VM 上にホスト キャッシュを構成した場合、キャッシュを使ってアプリケーションの要求を超える 16,000 IOPS を得ることができます。