可視 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 コアの数をカスタマイズすることを検討してください。
使用可能な vCPU の数に基づいてライセンスが付与される Windows Server や SQL Server などのソフトウェアを実行している。
事前定義されたマシンタイプを使用している。このマシンタイプでは vCPU の数や RAM の容量を変更できない。
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 のパフォーマンスに影響する可能性があります。
永続ディスク
- Persistent Disk のパフォーマンスの上限はマシンタイプによって異なり、可視 CPU コアの数によって影響を受けません。詳細については、ブロック ストレージのパフォーマンスをご覧ください。
ネットワーク下り(外向き)
- 下り(外向き)ネットワークの帯域幅の上限はマシンタイプと一致し、可視 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 の倍数 |
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
次の
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 を作成するゾーン。
次の
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
次の
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 個が可視となります。
次の
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
: プロジェクトの IDZONE
: VM を作成するゾーンINSTANCE_TEMPLATE_NAME
: VM の作成元となるインスタンス テンプレートの名前VM_NAME
: インスタンス テンプレートから作成する VM の名前
可視 CPU コアの数をカスタマイズする
既存の VM の可視 CPU コアの数をカスタマイズするには、Google Cloud コンソール、gcloud CLI、Compute Engine API のいずれかを使用します。
インスタンス テンプレートを使用して、VM グループの可視 CPU コア数をカスタマイズした場合は、新しいインスタンス テンプレートを作成し、インスタンス テンプレートから新しい VM を作成する必要があります。インスタンス テンプレートの詳細については、インスタンス テンプレートをご覧ください。
コンソール
既存の VM の可視 CPU コアの数をカスタマイズするには、次の手順で操作します。
VM を停止します。
[マシンの構成] > [高度な構成] > [可視コアの数] で、可視コアの数を選択します。
VM を再起動します。
gcloud
既存の VM の可視 CPU コアの数の値を更新するには、次の手順で操作します。詳細については、インスタンス プロパティを更新するをご覧ください。
gcloud compute instances export
コマンドを使用して、既存の VM プロパティをファイルにエクスポートします。エクスポートされたプロパティを含むファイルで、次の値を変更または追加します。
advancedMachineFeatures: visibleCoreCount: VISIBLE_CORE_COUNT
VM のプロパティを更新するには、
--most-disruptive-allowed-action=RESTART
でgcloud 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
: プロジェクトの IDZONE
: VM が配置されているゾーンVM_NAME
: プロパティをエクスポートする VM の名前VISIBLE_CORE_COUNT
: 可視 CPU コアの数
次のステップ
可視 CPU コア数を表示する方法を確認する。
Microsoft ソフトウェアのライセンス オプションについて確認する。
コアあたりのスレッド数を設定する方法を確認する。