単一テナント VM での CPU のオーバーコミット


単一テナントノードでの CPU オーバーコミットにより、予備の CPU サイクルを相互に共有できるインスタンスをスケジュールできます。これにより、単一テナントノードのリソースをオーバープロビジョニングし、単一テナントノードで VM CPU を通常より多くスケジュールできます。CPU のオーバーコミットは、十分に活用されていないワークロードで比較的相関性のないバーストが発生する可能性がある場合に特に役立ちます。CPU のオーバーコミットにより、他の方法で使用できない CPU へのアクセスが可能になり、コストを削減できます。また、1 つのホストに複数の VM を追加できるので、ソケット単位またはコア単位のライセンス要件を少なくすることもできます。

単一テナントノードでプロビジョニングする VM の設定には、VM のマシンタイプを選択する必要があります。それぞれのマシンタイプには一定数の CPU が指定されています。ある VM がマシンタイプの提供する CPU リソースを一部使用していない場合、その不使用の CPU リソースは、CPU オーバーコミットを使用している他の VM が利用できます。つまり、単一テナントノードでさらなる CPU リソースを使用できる場合があるということです。

VM に割り当てられる CPU の最小数の値は、VM の作成中または VM の停止後に指定され、VM で使用できることが保証される CPU の最小数を表します。この値は VM ごとに設定できます。これにより、1 つの単一テナントノードで CPU オーバーコミットの比率が異なる VM をプロビジョニングできます。値を小さくすると、相関性のあるバーストが発生した場合にパフォーマンスが低下する可能性がありますが、容量要件を低くすることができます。最適な最小 CPU 数を決定するには、ワークロードの使用率を理解し、値を繰り返し変更する必要があります。この値を設定する際は、次の点に注意してください。

  • CPU の最小数を設定しなかった場合、または VM のマシンタイプの CPU 数と同じ値を CPU の最小数に設定した場合、VM のオーバーコミット比は 1.0 になります。オーバーコミット比を 1.0 に設定すると、CPU がアクセスできる VM がこの VM のみになるため、他の VM にオーバーコミットできる CPU リソースはなくなります。

  • CPU の最小数には、VM のマシンタイプで指定された CPU 数を超える値を設定できません。

  • 単一テナントノードのすべての VM の最小 CPU 数の合計は、その単一テナントノード タイプの CPU 容量(n1-node-96-624 ノードタイプでは 96)を超えないようにする必要があります。

VM のマシンタイプが指定する CPU 数は静的な値で、VM が最小 CPU 数からバーストした場合に使用できる CPU 数の上限を表します。必要な CPU 数が事前定義されたマシンタイプの提供する CPU 数と異なる場合は、カスタム マシンタイプを使用できます。

単一テナント VM を構成して CPU リソースをオーバーコミットできるようにするには、次の手順を行います。

  1. CPU オーバーコミットを有効にした単一テナントノード テンプレートを作成します。CPU のオーバーコミットは、ノード テンプレートの作成中に有効にする必要があります。ノード テンプレートの作成後に CPU のオーバーコミットを有効にすることはできません。

  2. CPU オーバーコミットが有効になっている単一テナントノード テンプレートに基づいて、単一テナントノード グループを作成します。

  3. VM を作成し、次の手順を行います。

    1. VM のマシンタイプを選択します。最小 CPU 数がマシンタイプの指定する CPU 数より少ない場合、マシンタイプの CPU 数は VM が最小 CPU 数からバーストした場合に使用できる CPU 数の上限を表します。単一テナントノードの CPU とメモリ容量を超えない限り、単一テナントノードの VM にはそれぞれ異なるマシンタイプを選択できます。

    2. その単一の VM に割り当てる CPU の最小数を指定するか、マネージド インスタンス グループを使用して、同じ CPU オーバーコミット レベルで複数の VM を作成します。

考慮事項

VM の CPU オーバーコミット レベルを構成する前に、ワークロードの重要度を考慮してください。開発ワークロードやテスト ワークロードなど、重要度の低いワークロードは、高いオーバーコミット レベルを許容できる可能性があります。本番環境の支払いシステムなど、より重要なワークロードは、同等のオーバーコミットが許容されないか、まったく許容されない可能性があります。

ワークロードの使用率も考慮してください。CPU 使用率が高いワークロードは、他のオーバーコミットされた VM が使用する予備の使用率サイクルがないため、CPU オーバーコミットの適切な候補にはなりません。また、平均 CPU 使用率が低く、使用率のピークが低いワークロードでは、さまざまなサイズのマシンタイプによるメリットが得られる可能性があります。

CPU オーバーコミットを使用すると、ピーク使用率が高く、平均使用率が低い無相関のバースト性のあるワークロードにメリットがあります。これらのワークロードには、一部の VM が使用率をバーストする必要がある場合に、VM 間で共有できる利用可能な CPU リソースがある可能性が高いためです。ホスト上のすべての VM が一度にバーストした場合、そのホストには VM に十分なリソースがありません。

制限事項

  • CPU のオーバーコミットは、厳密なパフォーマンス要件のないワークロード(開発やテスト用のワークロード、仮想デスクトップ インフラストラクチャなど)に最適です。

  • 高レベルの CPU オーバーコミットは、パフォーマンスの影響を受けるワークロードに適さない場合があります。

  • 平均使用率とピーク使用率が常に低いワークロードの場合は、サイズの適正化をおすすめします。CPU のオーバーコミットではなく、ワークロードのリソース要件を満たすように VM インスタンスのサイズを変更することをおすすめします。

  • CPU のオーバーコミットは、次のものに対してのみ行うことができます。

    • n1-node-96-624 ノードタイプに基づいてノードグループにプロビジョニングされる n1 マシンタイプ VM

    • n2-node-80-640 ノードタイプに基づいてノードグループにプロビジョニングされる n2 マシンタイプ VM

  • 各単一テナントノードの最小 CPU のみを VM の CPU の半分に構成できるため、最大単一テナントノードのオーバーコミット率は 2.0 になります。

  • CPU のオーバーコミット用に構成されていない単一テナントノード テンプレートに基づく単一テナントノード グループでは、CPU のオーバーコミットを有効にして VM をプロビジョニングすることはできません。CPU のオーバーコミットが構成されていない単一テナントノードの最小 CPU 数で VM のスケジューリングを行うことはできません。

  • インスタンスのオーバーコミットが高すぎる場合は、インスタンスを別の単一テナントノードに移動します

  • CPU 割り当ては、オーバーコミットで使用可能な vCPU の最大値ではなく、単一テナントノード タイプの vCPU の数に基づいて行われます。

料金

ノード テンプレートで CPU オーバーコミットが選択されている単一テナントノードには、25% の追加料金がかかります。この料金は、単一テナントノードで VM を実行する場合の 10% のプレミアムに追加されます。CPU オーバーコミットのプレミアムは、CPU オーバーコミット レベルや、単一テナントノードでスケジュールされている VM の数に関係なく固定されています。

単一テナントノードでは、確約利用割引が提供されます。単一テナント プレミアムと CPU オーバーコミット プレミアムでは、継続利用割引をご利用いただけます。

単一テナントノードで VM を実行するコストを見積もるには、料金計算ツールをご覧ください。

始める前に

CPU のオーバーコミット レベルの設定

次の手順では、CPU リソースをオーバーコミットできる単一テナント VM を作成する方法を説明します。現在実行中の VM の CPU オーバーコミット レベルを変更する必要がある場合は、まず VM を停止する必要があります。

Console

Google Cloud Console で、CPU オーバーコミットが有効になっている単一テナントノード テンプレートから作成された単一テナントノード グループに単一テナント VM を作成します。

  1. [単一テナントノード] ページに移動します。

    [単一テナントノード] ページに移動

  2. [ノードグループ] をクリックします。

  3. VM を作成する単一テナントノード グループをクリックします。

  4. [インスタンスを作成] をクリックします。

  5. VM の [名前]、[リージョン]、[ゾーン] を指定します。

  6. [マシンの構成] で、4 つ以上の vCPU を持つ固定またはカスタムの [マシンタイプ] を選択します。

  7. [CPU のオーバーコミット] で、[CPU のオーバーコミットを有効にする] を選択します。

  8. [割り当てられる最小 vCPU 数] でスライダーを調整するか、vCPU の数を手動で入力して、この VM の CPU のオーバーコミット レベルを指定します。

  9. [作成] をクリックして、CPU リソースをオーバーコミットできる VM インスタンスを作成します。

gcloud

次の例では、[gcloud compute instances create(/sdk/gcloud/reference/beta/compute/instances/create) コマンド] で、固定されたマシンタイプとオーバーコミットで利用可能な CPU リソースを使用して単一テナント VM を作成する方法を示しています。

CPU リソースをオーバーコミットできる単一テナント VM をカスタム マシンタイプで作成するには、--machine-type フラグを省略し、代わりに --custom-cpu フラグと --custom-memory フラグを使用して、カスタムマシンの CPU 数とメモリ量(ギガバイト単位)を指定します。

gcloud compute instances create VM_NAME \
  --machine-type=MACHINE_TYPE \
  --min-node-cpu=MIN_VCPUS \
  --node-group=GROUP_NAME

以下を置き換えます。

  • VM_NAME: CPU をオーバーコミットする VM の名前。

  • MACHINE_TYPE: 単一テナント VM をプロビジョニングするマシンタイプ。マシンタイプで指定される CPU の数は、VM が MIN_VCPUS からバーストできる CPU の最大数です。

  • MIN_VCPUS: この VM で使用できることが保証される vCPU の最小数。

  • GROUP_NAME: VM をプロビジョニングする単一テナントノード グループの名前。

API

次の例は、instances.insert コマンドを使用して、CPU リソースをオーバーコミットできる単一テナント VM を固定マシンタイプで作成する方法を示しています。

CPU リソースをオーバーコミットできる単一テナント VM をカスタム マシンタイプで作成するには、machineType フィールドの値を zones/zone/machineTypes/custom-CPUS-MEMORY に置き換え、CPUS を CPU の数に、MEMORY をカスタム マシンタイプのメモリ量(ギガバイト単位)に置き換えます。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/PROJECT_ZONE/instances

{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "scheduling": {
    "minNodeCpus": MIN_VCPUS,
    "nodeAffinities": [
      {
        "key": "compute.googleapis.com/node-group-name",
        "operator": "IN",
        "values": [
          "GROUP_NAME"
        ]
      }
    ]
  },
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "/projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "/global/networks/NETWORK",
    }
  ]
}

以下を置き換えます。

  • PROJECT_ID: プロジェクトの ID

  • PROJECT_ZONE: プロジェクトをホストするゾーン。

  • MACHINE_TYPE_ZONE: マシンタイプをホストするゾーン。

  • MACHINE_TYPE: 単一テナント VM をプロビジョニングするマシンタイプ。マシンタイプで指定される CPU の数は、VM が MIN_VCPUS からバーストできる CPU の最大数です。

  • VM_NAME: CPU をオーバーコミットする単一テナント VM の名前。

  • MIN_VCPUS: この VM で使用できることが保証される vCPU の最小数。

  • GROUP_NAME: VM をプロビジョニングする単一テナントノード グループの名前。

  • IMAGE_PROJECT: イメージ ファミリーを含むイメージ プロジェクトの名前。

  • IMAGE_FAMILY: VM にイメージをコピーするイメージ ファミリーの名前。

  • NETWORK: ネットワークの名前(例: default)。構成によっては、subnetwork フィールドを追加しなければならない場合があります。

CPU 使用率の表示

次の手順に従って、単一テナントノード グループ内の単一テナント VM の CPU 使用率を確認します。

Console

  1. Google Cloud Console で、[単一テナントノード] ページに移動します。

    [単一テナントノード] ページに移動

  2. [ノードグループ] をクリックします。

  3. CPU がオーバーコミットされた VM がある単一テナントノードを含む単一テナントノード グループをクリックします。

  4. CPU がオーバーコミットされた VM がある単一テナントノードをクリックします。

  5. 単一テナントノードの名前の下に、[CPU 使用率]、[CPU オーバーコミット タイプ]、[最小の CPU 使用数] が表示されます。

    • [CPU 使用率] は、この単一テナントノード上のすべての VM の最大 CPU 数の合計を、単一テナントノード タイプで指定された CPU の数で割った値です。オーバーコミットに使用できるノード上の CPU の数は、分子から分母を差し引いた数です。オーバーコミット レベルは、分子と分母の商です。

    • [最小の CPU 使用数] は、単一テナントノード上のすべての VM に割り当てられた CPU の最小数の合計を、ノードタイプで指定された CPU の数で割った値です。

CPU のオーバーコミット レベルの最適化

CPU のオーバーコミットを最適なレベルに調整できるように、Compute Engine ではスケジューラ待機時間の指標を提供しています。スケジューラ待機時間の指標は、VM 上のすべての vCPU の待機時間を示します。これは、CPU のオーバーコミットが VM のパフォーマンスに及ぼす影響を判断する際に役立ちます。

ワークロードの感度はさまざまですが、一般的なルールでは、各 vCPU の最大待機時間として 1 秒あたり 20 メガサンプル(MS/秒)を使用します。たとえば、VM で 8 vCPU が設定されている場合、おおまかなしきい値は 160 MS/秒で、許容されるスケジューラ待機時間の平均は vCPU あたり 20 MS/秒になります。ワークロードのパフォーマンス要件により、最終的な許容範囲が決まります。

Console

  1. Google Cloud Console で、[モニタリング] ページに移動します。

    モニタリング ページに移動

  2. [Metrics Explorer] をクリックします。

  3. [Find resource type and metric] に「VM Instance」と入力します。

  4. [指標の選択] に「Scheduler Wait Time」と入力します。

  5. [アラート] をクリックして、VM の待機時間しきい値に達したときにトリガーされるアラートを設定します。

次のステップ