可視 CPU コアの数をカスタマイズする


可視 CPU コアの数をカスタマイズすると、ネットワーキングと Persistent Disk のパフォーマンスを維持しながら、ライセンス コストを詳細に制御できます。このカスタマイズにより、仮想マシン(VM)インスタンスで使用できる vCPU の数が減少します。マシンタイプや価格は変更されません。

Compute Engine は、各仮想 CPU(vCPU)を物理 CPU コア上で実行される単一のハードウェア マルチスレッドとして実装します。VM で使用可能な vCPU の数を減らせるよう、Compute Engine では可視 CPU コアの数をカスタマイズできます。

可視コアとは、VM が消費する基盤となるハードウェアの CPU コアのことです。VM の可視 CPU コアの数は、デフォルトでマシンタイプの vCPU の数をコアあたりのスレッド数で割った値です。

  • 可視 CPU コア = マシンタイプの vCPU 数 / コアあたりのスレッド数

たとえば、c2-standard-60 マシンタイプでは 60 個の vCPU を指定します。コアあたりのデフォルトのスレッド数が 2 の場合、可視 CPU コアの数は 30 です。可視コア数を 30 から 20 に減らすと、機能する vCPU の数は 60 から 40 に減少します。

次のいずれかに該当する場合は、可視 CPU コアの数をカスタマイズすることを検討してください。

VM で使用可能な vCPU の数をカスタマイズする前に、カスタム マシンタイプの使用を検討してください。

必要なロール

可視 CPU コアの数をカスタマイズするために必要な権限を取得するには、プロジェクトに対する Compute インスタンス管理者(v1)roles/compute.instanceAdmin.v1)IAM ロールの付与を管理者に依頼してください。ロールの付与の詳細については、アクセス権の管理に関する記事をご覧ください。

この事前定義ロールには、可視 CPU コアの数をカスタマイズするために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

可視 CPU コアの数をカスタマイズするには、次の権限が必要です。

  • VM 作成中に可視 CPU コアの数をカスタマイズするには:
    • プロジェクトに対する compute.instances.create
    • カスタム イメージを使用して VM を作成する: イメージに対する compute.images.useReadOnly
    • スナップショットを使用して VM を作成する: スナップショットに対する compute.snapshots.useReadOnly
    • インスタンス テンプレートを使用して VM を作成する: インスタンス テンプレートに対する compute.instanceTemplates.useReadOnly
    • レガシー ネットワークを VM に割り当てる: プロジェクトに対する compute.networks.use
    • VM の静的 IP アドレスを指定する: プロジェクトに対する compute.addresses.use
    • レガシー ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトに対する compute.networks.useExternalIp
    • VM のサブネットを指定する: プロジェクトまたは選択したサブネットに対する compute.subnetworks.use
    • VPC ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトまたは選択したサブネットに対する compute.subnetworks.useExternalIp
    • VM の VM インスタンス メタデータを設定する: プロジェクトに対する compute.instances.setMetadata
    • VM にタグを設定する: VM に対する compute.instances.setTags
    • VM にラベルを設定する: VM に対する compute.instances.setLabels
    • VM が使用するサービス アカウントを設定する: VM に対する compute.instances.setServiceAccount
    • VM に新しいディスクを作成する: プロジェクトに対する compute.disks.create
    • 既存のディスクを読み取り専用モードまたは読み取り / 書き込みモードでアタッチする: ディスクに対する compute.disks.use
    • 既存のディスクを読み取り専用モードでアタッチする: ディスクに対する compute.disks.useReadOnly
  • インスタンス テンプレートを使用して VM グループの可視 CPU コアの数をカスタマイズするには: VM の作成時に使用するすべての権限と、プロジェクトに対する compute.instanceTemplates.create が必要です。

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

vCPU 数とコアあたりのスレッド数

1 つのマシンタイプにおける vCPU の合計数は、可視 CPU コア数にコアあたりのスレッド数を乗じたものです。ほとんどのマシンシリーズでは、コアあたりのスレッド数は 2 ですが、コアあたりのスレッド数を手動で設定して 1 にすることもできます。

c2-standard-60 マシンタイプを例に、可視 CPU コア、コアあたりのスレッド数、使用可能な vCPU の合計数の関係を次の表に示します。

マシンタイプ 可視 CPU コア数 コアあたりのスレッド数 利用可能な vCPU 数
c2-standard-60 30(デフォルト) 2(デフォルト) 60
c2-standard-60 30(デフォルト) 1 30
c2-standard-60 20 2(デフォルト) 40
c2-standard-60 20 1 20

パフォーマンスに関する注意事項

可視コアの数を減らすと、VM のパフォーマンスに影響する可能性があります。

永続ディスク

ネットワーク下り(外向き)

  • 下り(外向き)ネットワークの帯域幅の上限はマシンタイプと一致し、可視 CPU コア数の影響は受けません。ただし、ネットワーク パフォーマンスは、VM にアクセス可能な vCPU の数によって異なります。たとえば、可視 CPU コアが 1 つのn2-standard-16 マシンタイプでは、32 Gbps の接続を最大限に活用できない場合があります。

料金

可視コアの数を減らすと、VM の費用に影響する可能性があります。

オペレーティング システムのライセンス費用

  • 一部のオペレーティング システムでは、可視 CPU コアの数を減らすことでライセンス費用を削減できます。該当するオペレーティング システムとは、VM で使用可能な vCPU ごとに料金が発生するシステムです(Windows Server や SQL Server など)。Compute Engine 上のこれらのオペレーティング システムのライセンス オプションの詳細については、Microsoft ライセンスをご覧ください。

VM の費用、割り当て、容量

  • 可視 CPU コアの数をカスタマイズしても、VM のコスト、割り当て、容量は変わりません。これは、Compute Engine がマシンタイプの CPU コア数を使用しているかのように、VM のマシンタイプに課金、割り当ての追跡、スペースの割り当てを行うためです。Compute Engine の VM に対する課金方法については、VM インスタンスの料金をご覧ください。

制限事項

  • VM が RUNNING 状態のときに、可視 CPU コアの数をカスタマイズすることはできません。VM の状態の詳細については、VM インスタンスのライフサイクルをご覧ください。

  • Google Cloud コンソールでは、可視コアの数が減少すると、CPU 使用率の指標は 100% までスケールアップできません。可視 CPU コアの数は、CPU コアの最大数で割った値に制限されています。

サポートされているマシンタイプと各タイプの有効な値

多くのマシンタイプは、可視 CPU コア数のカスタマイズをサポートしています。可視 CPU コアの数は、整数で指定してください。最大値は、マシンタイプの vCPU(アクセラレータ最適化マシンタイプの GPU)の数を VM のコアあたりのスレッド数で割った値です。

次の表に、このカスタマイズをサポートするマシンタイプと、これらのファミリーのマシンタイプでの可視 CPU コアの有効な値を示します。

マシンタイプ ファミリー 事前定義された vCPU の数* 可視 CPU コアの有効値
汎用
C4 4、8、16、32、48 任意
C4 96 2 の倍数
C4 192 4 の倍数
C3D ≤ 180 任意
C3D 360 2 の倍数
C3 4、8、22、44 1 の倍数
C3 88 2 の倍数
C3 176 4 の倍数
c3-*-metal 192 非対応
E2 ≤ 32 任意
N2 ≤ 32 任意
N2 > 32 2 の倍数
N2D ≤ 24 任意
N2D > 24 2 の倍数
N4 ≤ 80 任意
N1 ≤ 64 任意
N1 > 64 2 の倍数
N1(TPU 最適化) 48 任意
N1(TPU 最適化) 96 2 の倍数
ストレージ最適化
Z3 88 2 の倍数
Z3 176 4 の倍数
コンピューティング最適化
H3 88 4 の倍数
C2 4、8、16、30 任意
C2 60 2 の倍数
メモリ最適化
M3 128 2 の倍数
M3 32、64 任意
M2 208 4 の倍数
M2 416 8 の倍数
M1 40 任意
M1 80、96 2 の倍数
M1 160 4 の倍数
アクセラレータ最適化
A3 208 2 の倍数
A2 ≤ 48 任意
A2 96 2 の倍数
G2 ≤ 48 任意
G2 96 2 の倍数
* ほとんどのマシンタイプの名前には vCPU 数が含まれています。ただし、A3 および A2 アクセラレータ最適化マシンタイプの場合、マシンタイプの名前には事前定義された GPU 数が含まれます。A3 と A2 のアクセラレータ最適化マシンタイプの vCPU 数を確認するには、アクセラレータ最適化マシン ファミリーのドキュメントをご覧ください。

VM 作成中に可視 CPU コアの数をカスタマイズする

単一の VM を作成するときに可視 CPU コアの数をカスタマイズするには、Google Cloud コンソール、gcloud CLI、または Compute Engine API を使用します。

次の例は、可視 CPU コア数を低減した SQL Server VM を作成する方法を示しています。

コンソール

VM の作成時に可視 CPU コアの数をカスタマイズするには、次の手順で操作します。

  • [マシンの構成] > [高度な構成] > [可視コアの数] で、可視コアの数を選択します。

gcloud

可視 CPU コア数を低減した SQL Server VM を作成するには、次の gcloud compute instances create コマンドを使用します。

gcloud compute instances create VM_NAME \
    --image-project=windows-sql-cloud \
    --image-family=sql-ent-2019-win-2019 \
    --machine-type=MACHINE_TYPE \
    --visible-core-count=VISIBLE_CORE_COUNT \
    --zone=ZONE

次のように置き換えます。

  • VM_NAME: VM の名前。

  • MACHINE_TYPE: サポートされているマシンタイプ(c2-standard-60 など)。

  • VISIBLE_CORE_COUNT: 可視 CPU コアの数。たとえば、c2-standard-60 マシンタイプを使用しており、20 に設定し、コアあたりのスレッド数が 2 の場合は、60 個の CPU のうち 40 個が可視となります。

  • ZONE: VM を作成するゾーン。

REST

可視 CPU コア数を低減した SQL Server VM を作成するには、次の instances.insert メソッドを使用します。

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

{
  "name": "VM_NAME",
  ...
  "advanced_machine_features": {
    ...
    "visibleCoreCount": "VISIBLE_CORE_COUNT"
  },
  ...
}

次のように置き換えます。

  • PROJECT_ID: プロジェクトの ID。

  • ZONE: VM インスタンスを作成するゾーン。

  • VM_NAME: VM の名前。

  • VISIBLE_CORE_COUNT: 可視 CPU コアの数。たとえば、c2-standard-60 マシンタイプを使用しており、20 に設定し、コアあたりのスレッド数が 2 の場合は、60 個の CPU のうち 40 個が可視となります。

インスタンス テンプレートを使用して、VM グループでの可視 CPU コアの数をカスタマイズする

インスタンス テンプレートを使用して VM を作成するときに可視 CPU コアの数をカスタマイズするには、Google Cloud コンソール、gcloud CLI、または Compute Engine API を使用します。

次の例は、インスタンス テンプレートを使用して、同一の SQL Server VM のグループを作成し、可視 CPU コア数を低減する方法を示しています。

コンソール

インスタンス テンプレートの作成時に可視 CPU コアの数をカスタマイズするには、次のようにします。

  • [マシンの構成] > [高度な構成] > [可視コアの数] で、可視コアの数を選択します。

gcloud

  1. 次の gcloud compute instance-templates create コマンドを使用して、SQL Server VM のインスタンス テンプレートを作成し、それぞれの可視 CPU コアの数を低減します。

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
       --image-project=windows-sql-cloud \
       --image-family=sql-ent-2019-win-2019 \
       --machine-type=MACHINE_TYPE \
       --visible-core-count=VISIBLE_CORE_COUNT \
       --zone=ZONE
    

    次のように置き換えます。

    • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。

    • MACHINE_TYPE: サポートされているマシンタイプ(c2-standard-60 など)。

    • VISIBLE_CORE_COUNT: 可視 CPU コアの数。たとえば、c2-standard-60 マシンタイプを使用しており、20 に設定し、コアあたりのスレッド数が 2 の場合は、60 個の CPU のうち 40 個が可視となります。

    • ZONE: VM を作成するゾーン。

  2. 次の gcloud compute instances create コマンドを使用して、SQL Server VM を作成し、各 VM の可視 CPU コア数を低減します。

    gcloud compute instances create INSTANCE_NAMES \
       --source-instance-template=INSTANCE_TEMPLATE_NAME
    

    次のように置き換えます。

    • INSTANCE_NAMES: インスタンス テンプレートから作成する VM の名前(スペース区切り)

    • INSTANCE_TEMPLATE_NAME: VM の作成元となるインスタンス テンプレートの名前

REST

  1. 次の instanceTemplates.insert メソッドを使用して、各 VM の可視 CPU コアの数を低減した SQL Server VM のインスタンス テンプレートを作成します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
    
    {
     "name": "INSTANCE_TEMPLATE_NAME",
     ...
     "advanced_machine_features": {
       ...
       "visible_core_count": "VISIBLE_CORE_COUNT"
     },
     ...
    }
    

    次のように置き換えます。

    • PROJECT_ID: プロジェクトの ID。

    • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。

    • VISIBLE_CORE_COUNT: 可視 CPU コアの数。たとえば、c2-standard-60 マシンタイプを使用しており、20 に設定し、コアあたりのスレッド数が 2 の場合は、60 個の CPU のうち 40 個が可視となります。

  2. 次の instances.insert メソッドを使用して、各 VM の可視 CPU コアの数を低減した SQL Server VM を作成します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?sourceInstanceTemplate=INSTANCE_TEMPLATE_NAME
    
    {
     "name": "VM_NAME",
     ...
    }
    

    次のように置き換えます。

    • PROJECT_ID: プロジェクトの ID

    • ZONE: VM を作成するゾーン

    • INSTANCE_TEMPLATE_NAME: VM の作成元となるインスタンス テンプレートの名前

    • VM_NAME: インスタンス テンプレートから作成する VM の名前

可視 CPU コアの数をカスタマイズする

既存の VM の可視 CPU コアの数をカスタマイズするには、Google Cloud コンソール、gcloud CLI、Compute Engine API のいずれかを使用します。

インスタンス テンプレートを使用して、VM グループの可視 CPU コア数をカスタマイズした場合は、新しいインスタンス テンプレートを作成し、インスタンス テンプレートから新しい VM を作成する必要があります。インスタンス テンプレートの詳細については、インスタンス テンプレートをご覧ください。

コンソール

既存の VM の可視 CPU コアの数をカスタマイズするには、次の手順で操作します。

  1. VM を停止します。

  2. [マシンの構成] > [高度な構成] > [可視コアの数] で、可視コアの数を選択します。

  3. VM を再起動します。

gcloud

既存の VM の可視 CPU コアの数の値を更新するには、次の手順で操作します。詳細については、インスタンス プロパティを更新するをご覧ください。

  1. gcloud compute instances export コマンドを使用して、既存の VM プロパティをファイルにエクスポートします。

  2. エクスポートされたプロパティを含むファイルで、次の値を変更または追加します。

    advancedMachineFeatures:
     visibleCoreCount: VISIBLE_CORE_COUNT
    
  3. VM のプロパティを更新するには、--most-disruptive-allowed-action=RESTARTgcloud compute instances update-from-file コマンドを使用します。

REST

VM の可視 CPU コア数を更新するには、次の instances.update メソッドを使用します。

PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME?most_disruptive_allowed_action=RESTART

{
  ...
  "advanced_machine_features": {
    ...
    "visible_core_count": "VISIBLE_CORE_COUNT"
  },
  ...
}

次のように置き換えます。

  • PROJECT_ID: プロジェクトの ID

  • ZONE: VM が配置されているゾーン

  • VM_NAME: プロパティをエクスポートする VM の名前

  • VISIBLE_CORE_COUNT: 可視 CPU コアの数

次のステップ