Skip to main content
Send feedback
Combine reservations with committed use discounts
Stay organized with collections
Save and categorize content based on your preferences.
Committed use discounts (CUDs)
provide deeply discounted prices for your Compute Engine resources in exchange
for 1-year or 3-year committed-use contracts (also known as commitments). You
commit to a minimum amount of resource usage or a minimum amount of spend and
receive CUDs on your resource usage costs in return. However, commitments don't
reserve zonal capacity for your committed resources. To get zonal resources at
discounted prices and also ensure that capacity is reserved
for them, you must both purchase commitments and create reservations for those
zonal resources.
This document explains how you can receive CUDs for your reserved resources and
how to attach reservations to
resource-based commitments .
Before you begin
CUDs for your reserved resources
You receive CUDs from active commitments for any
eligible resource usage
in your projects. If you also have any reservations to hold capacity for
resources in that project, CUDs from active commitments can also apply to
those reserved resources. For any reserved resources to become eligible to
receive CUDs, the following requirements apply:
Depending on the resource type, you can receive CUDs for your reserved resources
in one of the following ways:
vCPUs and memory : To receive CUDs for either or both of these resource
types, you can purchase resource-based or spend-based commitments that
include the required resource types. When VMs in your project consume any
reservations whose properties match such active commitments, usage for
these resource types automatically becomes eligible for applicable CUDs.
For resource-based commitments only, you can enable
CUD sharing .
Doing so lets you share CUDs from a project to cover usage across other
projects linked to that commitment's Cloud Billing account.
Caution: If you have a shared reservation in a project and want usage
from the shared projects to be eligible for the current project's CUDs,
then you must ensure the following:
Enable
CUD sharing on the current project's Cloud Billing account.
Share your reservation only with projects that are linked to the same
Cloud Billing account.
If you don't meet these conditions, then usage from those projects
won't be eligible for the shared CUDs and you might be charged the
on-demand rates.
If you reserved more resources than you committed to purchasing, then you
don't receive CUDs for those additional resources.
GPUs and Local SSD disks : To receive CUDs for either or both of these
resource types, you must do the following:
Purchase resource-based commitments that include the required resource
types.
Create reservations for all the committed resources with properties that
match your commitment, and attach those reservations to the commitment.
Note: If you specify any local Titanium SSD disks in your
commitment for use with C4, C4A, C4D, H4D, or Z3 instances, then you
don't need attached reservations for those disks.
When VMs in your project consume these attached reservations, you start to
receive the applicable CUDs for these types of reserved resources.
If you enable CUD sharing and attach a shared reservation, then usage
from other consumer projects may also become eligible for the shared
resource-based CUDs. However, for usage from other projects to qualify, you
must limit sharing your reservation to within the commitment's
Cloud Billing account. If projects outside of the
Cloud Billing account consume that shared reservation, then that
usage won't eligible for this Cloud Billing account's shared CUDs
and might be charged at on-demand rates.
Attach reservations to resource-based commitments
You can attach reservations to any resource-based commitment and ensure that
capacity is held in specific zones for the committed resources that you plan to
use. You can attach multiple reservations to a single commitment; however,
a reservation can only be attached to a single commitment.
When you purchase a commitment, you can attach reservations to that commitment
in one of the following ways:
Using existing reservations whose properties match with the commitment
Creating new matching reservations while purchasing your commitment
Caution: If you have a shared reservation in a project and want usage
from the shared projects to be eligible for the current project's CUDs, then
you must ensure the following:
Enable
CUD sharing on the current project's Cloud Billing account.
Share your reservation only with projects that are linked to the same
Cloud Billing account.
If you don't meet these conditions, then usage from those projects won't
be eligible for the shared CUDs and you might be charged the on-demand rates.
After you purchase a commitment with attached reservations, the reservations
remain active as long as the commitment is active. When your commitment expires,
Compute Engine automatically deletes any attached reservations. Deleting
these reservations has no effect on any running VMs that were consuming
those reservations. The running VMs continue to run and you are still charged
for those VMs.
Important: For the duration of your commitment's term, you cannot delete or
resize any attached reservations that specify GPUs, Local SSD disks, or both.
However, you can replace the commitment's existing attached reservations with
new ones. For more information on what can and cannot be changed for your
attached reservations, see Allowed changes
in this document.
Committed resources that don't require attached reservations
Committed vCPUs and memory don't require you to attach matching reservations to
your commitments. Nevertheless, when you purchase a commitment that includes
vCPUs, memory, or both, you can still choose to attach reservations that specify
those resources. To learn how to purchase commitments solely for vCPUs, memory,
or both, without attaching reservations, see
Purchasing commitments without attached reservations .
Committed resources that require attached reservations
Committed GPUs and Local SSD disks (with the exception of local Titanium SSD
disks for C4, C4A, C4D, H4D, or Z3 instances ) require you to attach matching
reservations to your commitments. When you purchase a commitment that includes
any GPUs, Local SSD disks, or both, you must also reserve those
resources and attach those reservations to your commitment. You can
do this using a single reservation or a combination of reservations.
When you purchase such a commitment, you can also include vCPUs, memory, or
both. However, you don't need to reserve those vCPUs or memory.
To learn how to purchase commitments for GPUs or Local SSD disks, see the
following:
To view the complete list of machine series that support CUDs for GPUs and
Local SSD disks, see the
Hardware commitment types
section in the resource-based CUDs documentation.
Quantities of resources allowed in attached reservations
For vCPUs and memory , you can have attached reservations specifying more or
less amounts of resources than you are committing to. If you commit to more
vCPUs or memory than you reserve, then Compute Engine reserves capacity
only for these reserved resources. However, you can still use your additional
committed resources depending on their availability in your region. If you
reserve more vCPUs or memory than you commit to, then you don't receive CUDs
for those additional resources that you reserve.
For example, when you
purchase a commitment for 4 vCPUs and 30 GB memory, you can choose to do
either of the following:
However, if your commitment contains any GPUs, Local SSD disks, or both , you
must reserve and attach all those resources. Your attached reservations must
specify the exact numbers and types of the GPUs and Local SSD disks that you are
committing to. Consequently, you also cannot have any additional number or types
of GPUs or Local SSD disks in your attached reservations.
Note: If you specify any local Titanium SSD disks in your commitment for
use with C4, C4A, C4D, H4D, or Z3 instances, then you don't need attached
reservations for those disks.
For example, suppose you purchase a commitment for 30 GB
memory and 4 NVIDIA P100 GPUs. The attached reservation (or combination
of attached reservations) can specify any amount of vCPUs or memory, but it must
have exactly 4 GPUs that are of NVIDIA P100 type. In this example, you can't
attach reservations specifying any of the following combination of resources:
6 NVIDIA P100 GPUs
2 NVIDIA P100 GPUs
4 NVIDIA P100 GPUs and 2 NVIDIA V100 GPUs
4 NVIDIA P100 GPUs and 4 Local SSD disks
Purchase commitments with attached reservations
When you purchase a new commitment, you can attach reservations to
your commitment in either of the following ways:
After you purchase a commitment, your commitment becomes active on the
following day at 12 AM US and Canadian Pacific Time (UTC-8, or UTC-7 during
daylight saving time).
Between the time of your commitment purchase and its activation time, the
status of your commitment remains as NOT_YET_ACTIVE (or as PENDING on the
Google Cloud console). After activation, the status of your commitment changes to
ACTIVE.
For example, suppose you purchase your commitment on January 20, 2024, at 10:00 PM
US and Canadian Pacific Time (UTC-8 or UTC-7). Compute Engine creates your
commitment immediately with its status as NOT_YET_ACTIVE. Your
commitment becomes ACTIVE on January 21, 2024, at 12:00 AM US
and Canadian Pacific Time (UTC-8 or UTC-7).
Requirements
Before you purchase a commitment with attached reservations, review these
requirements and make sure that your commitment and reservations meet the
following criteria:
You must purchase the commitment and create the attached reservations in the
same project and region.
You must purchase the commitment and create the attached reservations for
resources from the same machine family series.
You must disable the
auto-delete option
on the attached reservations.
If your commitment has GPUs, then the GPU type specified in the reservation
and the commitment must match.
For GPUs and Local SSD disks, the number of reserved resources of each
resource type must exactly match with the number of committed resources
for that resource type. However, this requirement isn't applicable if you
specify any local Titanium SSD disks in your commitment for use
with C4, C4A, C4D, H4D, or Z3 machine types.
For example, if you want to purchase a commitment for 4 V100 GPUs and 2
Local SSD disks, then your commitment's attached reservations must specify a
total of 4 V100 GPUs and 2 Local SSDs. The amount of vCPU and memory that
you reserve can be more or less than what you commit to. However, if you
specify 4 C4A vCPUs and 2 local Titanium SSD disks in your
commitment, then you don't have to attach any reservations to the
commitment.
For GPUs, purchase commitments for the specific GPU types that you
intend to use. For example, you can purchase commitments for either NVIDIA
P100s or NVIDIA V100s, but you cannot use a commitment that was purchased
for NVIDIA P100 GPUs to cover NVIDIA V100 GPUs.
If your attached reservation is a shared reservation and you want to receive
the applicable CUDs when you consume that reservation outside your
commitment's project, then you must do both the following:
Share your reservations only between projects that belong to the same
Cloud Billing account as the commitment.
Enable CUD sharing
for that Cloud Billing account.
Attach existing reservations
You can attach existing reservations while purchasing your commitment by using
the Google Cloud console, the Google Cloud CLI, or REST.
Permissions required for this task
To perform this task, you must have the following
permissions :
To create a commitment: compute.commitments.create on the project
To create reservations: compute.reservations.create on the project
Console Before you purchase a commitment using the Google Cloud console,
select the project that you want to use to purchase the commitment. If
CUD sharing
is enabled for a Cloud Billing account, you can purchase the
commitment using any project from that Cloud Billing account.
After you select the project, do the following:
In the Google Cloud console, go to the Committed use discounts
page.
Go to Committed use discounts
Click add_box Purchase commitment .
The Purchase a commitment page appears.
In the Name field, enter a name for your commitment.
In the Region field, select the region where you want to purchase
the commitment.
In the Commitment type field, select the machine family series for
your commitment. The following
commitment types
provide options for GPUs, Local SSD disks, or both:
For A2 machine types, select Accelerator-optimized A2
For A3 Edge and A3 High machine types, select Accelerator-optimized A3
For A3 Mega machine types, select Accelerator-optimized A3 Mega
Note: For A4X Max, A4X, A4, or A3 Ultra machine types, you must
purchase your commitments by using the future reservations in
AI Hypercomputer consumption option. For more information,
see
Reserve capacity through your account team .
For G2 machine types, select Graphics-optimized G2
For G4 machine types, select Graphics-optimized G4
For C2 machine types, select Compute-optimized C2
For C2D machine types, select Compute-optimized C2D
For C3 machine types, select General-Purpose C3
For C3D machine types, select General-Purpose C3D
Caution : For C3 and C3D commitment types, the machine family that is
specified by the commitment type changes depending on the interface:
In the gcloud CLI and REST, the commitment type values use
Compute-optimized as the machine family, even though C3 and C3D are part
of the general-purpose machine family.
In the Google Cloud console, the commitment type values use the correct machine
series: General-Purpose .
Make sure to select the correct commitment type value that corresponds to the interface that
you're using.
For C4 machine types, select General-Purpose C4
For C4A machine types, select General-Purpose C4A
For C4D machine types, select General-Purpose C4D
For N1 machine types, select General-Purpose N1
For N2 machine types, select General-Purpose N2
For N2D machine types, select General-Purpose N2D
For M1 machine types, select Memory-optimized M1/M2
For M3 machine types, select Memory-optimized M3
For Z3 machine types, select Storage-optimized Z3
To attach one or more existing reservations to the commitment, do the
following:
Select the Attach a new or existing reservation checkbox.
Click Attach an existing reservation . The Attach existing
reservations pane appears and displays reservations from
your project. This list is filtered to match your specified region
and commitment type.
In the Attach existing reservations pane, select the checkbox
for each reservation that you want to attach.
Review the resource summary for your selected reservations and then
click Attach .
After you attach your reservations, Compute Engine
automatically populates the fields in the Commitment details
section to match the numbers and types of resources from your attached
reservations. If you manually entered values for any resources in the
Commitment details section before attaching reservations,
then your values are overwritten with values from the reservations.
In the Commitment details section, do the following:
In the Cores field, verify the pre-filled value. Optionally,
you can specify a different number of vCPUs.
In the Memory field, verify the pre-filled amount of memory in
GB. Optionally, you can specify a different amount. You can
specify memory only in increments of 0.25 GB. To specify a
custom memory value for your commitment, use gcloud CLI
or REST instead.
Expand the GPUs and local SSDs section and verify that the
types and numbers match between the commitment and attached
reservations, as follows:
In the GPU type field, verify the pre-filled GPU type.
In the Number of GPUs field, verify the pre-filled number
of GPUs.
In the Local SSDs field, verify the pre-filled number of
disks.
If you manually specify different values from the attached
reservations for any of these fields, then your commitment purchase
doesn't go through. For all GPUs and most local SSD disks, the
total numbers and types must match between your commitment
and attached reservations.
Note: This requirement doesn't apply to local Titanium SSD
disks for use with C4, C4A, C4D, H4D, Z3, or G4 machine series.
For these disks only, you don't need to attach any reservations and
you can choose to specify different numbers between your commitment
and attached reservations.
In the Term section, do the following:
To specify the
plan
for your commitment, select either 1 year or 3 years . The
plan determines the CUD rate and preset term duration of your
commitment.
Review the Start date field, which shows the date and time
when your commitment becomes active. This field is automatically
set to 12 AM US and Canadian Pacific Time on the day after your
current date.
Optional. To extend your commitment's
term
beyond the preset term duration that is defined by your commitment
plan, in the End date field, specify a custom end date for your
commitment. For more information, see
Extend commitment terms .
Optional. If you want your commitment to
automatically renew
at the end of its term, then select the Auto-renew commitment
checkbox.
In the Summary pane, review your commitment details and any
potential quota limitations.
To finish purchasing your commitment, do the following:
Navigate to the bottom of the page.
Review the Disclosures section that contains information about
fees, discount eligibility, and terms and conditions.
To confirm your acceptance of the
commitment price
and service specific terms ,
select the checkbox.
Click Purchase .
gcloud To purchase a commitment by attaching existing reservations, run the
gcloud compute commitments create command .
In your command, include the --existing-reservation flag to specify an
existing reservation that you want to attach to your commitment. Include a
new instance of this flag for every existing reservation that you want to
attach. You can attach any number of existing reservations to your
commitment.
For example, to purchase a commitment by attaching two reservations to it,
run the following command:
gcloud compute commitments create COMMITMENT_NAME \
--region=REGION \
--project=PROJECT_ID \
--resources=vcpu=COMMITTED_VCPUS ,memory=COMMITTED_MEMORY ,local-ssd=COMMITTED_LOCAL_SSD \
--resources-accelerator=count=COMMITTED_ACCELERATOR_COUNT ,type=COMMITTED_ACCELERATOR_TYPE \
--plan=PLAN \
--type=COMMITMENT_TYPE \
--custom-end-time=CUSTOM_END_DATE \
--existing-reservation=name='RESERVATION_NAME_1 ',zone='RESERVATION_ZONE_1 ' \
--existing-reservation=name='RESERVATION_NAME_2 ',zone='RESERVATION_ZONE_2 '
Replace the following:
COMMITMENT_NAME : the name of the commitment.
REGION : the region where the commitment is
located.
PROJECT_ID : the ID of the project where you
want to purchase the commitment with the attached reservations.
PLAN : the commitment plan, which
determines your CUD rate and the preset term duration. Specify
12-month or 36-month.
CUSTOM_END_DATE : Optional. A custom end date
for your term, which must be formatted as
YYYY-MM-DD . For example, to specify a custom
end date of April 20, 2024, format it as 2024-04-20.
COMMITMENT_TYPE : the commitment type. The
following commitment types provide options for GPUs, Local SSD disks, or
both:
For A2 machine types, use accelerator-optimized
For A3 Edge and A3 High machine types, use accelerator-optimized-a3
For A3 Mega machine types, use accelerator-optimized-a3-mega
Note: For A4X Max, A4X, A4, or A3 Ultra machine types, you must
purchase your commitments by using the future reservations in
AI Hypercomputer consumption option. For more information,
see
Reserve capacity through your account team .
For G2 machine types, use graphics-optimized
For G4 machine types, use graphics-optimized-g4
For C2 machine types, use compute-optimized
For C2D machine types, use compute-optimized-c2d
For C3 machine types, use compute-optimized-c3
For C3D machine types, use compute-optimized-c3d
Caution : For C3 and C3D commitment types, the machine family that is
specified by the commitment type changes depending on the interface:
In the gcloud CLI and REST, the commitment type values use
Compute-optimized as the machine family, even though C3 and C3D are part
of the general-purpose machine family.
In the Google Cloud console, the commitment type values use the correct machine
series: General-Purpose .
Make sure to select the correct commitment type value that corresponds to the interface that
you're using.
For N1 machine types, use general-purpose
For C4 machine types, use general-purpose-c4
For C4A machine types, use general-purpose-c4a
For C4D machine types, use general-purpose-c4d
For N2 machine types, use general-purpose-n2
For N2D machine types, use general-purpose-n2d
For M1 machine types, use memory-optimized
For M3 machine types, use memory-optimized-m3
For Z3 machine types, use storage-optimized-z3
COMMITTED_VCPUS : the number of vCPUs that
you want in your commitment. The number must be a positive integer.
COMMITTED_MEMORY : the amount, in MB or GB,
of memory that you want in your commitment. For example, 10240MB or
10GB. If you don't specify a unit, Compute Engine uses GB as
the unit.
COMMITTED_LOCAL_SSD : the amount, in GB, of
Local SSD space that you want in your commitment. Each Local SSD disk
is 375 GB.
COMMITTED_ACCELERATOR_COUNT : the number of GPUs
that you want in your commitment.
COMMITTED_ACCELERATOR_TYPE : the GPU type that
you want in your commitment.
RESERVATION_NAME_1 and
RESERVATION_NAME_2 : The names of the
existing reservations that you want to attach to the commitment.
RESERVATION_ZONE_1 and
RESERVATION_ZONE_2 : The zones of the
existing reservations that you want to attach to the commitment.
Example: Purchase a commitment by attaching existing reservations
Suppose you have two reservations res-01 and res-02 in the
us-central1-a and us-central1-b zones of the project myproject.
Suppose that these reservations hold a combined capacity for 4 NVIDIA P100
GPUs and 4 Local SSD disks. To purchase a new commitment in the
us-central1 region of this project for these GPUs and Local SSD disks,
and use these existing reservations as attached reservations, run the
following command. Note that the example commitment also contains vCPUs and
memory.
gcloud compute commitments create commitment-01 \
--region=us-central1 \
--project=myproject \
--resources=vcpu=96,memory=624GB,local-ssd=1500 \
--resources-accelerator=type=nvidia-tesla-p100,count=4 \
--plan 12-month \
--existing-reservation=name=res-01,zone=us-central1-a \
--existing-reservation=name=res-02,zone=us-central1-b
REST To purchase a commitment by attaching existing reservations, make a POST
request to the regionCommitments.insert method .
In your request, include the existingReservations field to specify a
comma-separated list of all the existing reservations that you want to
attach to your commitment. You can attach any number of existing
reservations to your commitment.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION /commitments
{
"name": "COMMITMENT_NAME ",
"plan": "PLAN ",
"type": "COMMITMENT_TYPE ",
"resources":
[
{
"amount": "COMMITTED_VCPUS ",
"type": "VCPU"
},
{
"amount": "COMMITTED_MEMORY ",
"type": "MEMORY"
},
{
"acceleratorType": "COMMITTED_ACCELERATOR_TYPE ",
"amount": "COMMITTED_ACCELERATOR_COUNT ",
"type": "ACCELERATOR"
},
{
"amount": "COMMITTED_LOCAL_SSD ",
"type": "LOCAL_SSD"
}
],
"customEndTimestamp": "CUSTOM_END_DATE TEND_TIME Z",
"existingReservations": "RESERVATION_URLs "
}
Replace the following:
COMMITMENT_NAME : the name of the commitment.
REGION : the region where the commitment is
located.
PROJECT_ID : the ID of the project where you
want to purchase the commitment with the attached reservations.
PLAN : the commitment plan, which
determines your CUD rate and the preset term duration. Specify
TWELVE_MONTH or THIRTY_SIX_MONTH.
COMMITMENT_TYPE : the commitment type. The
following commitment types provide options for GPUs, Local SSD disks, or
both:
For A2 machine types, use ACCELERATOR_OPTIMIZED
For A3 Edge and A3 High machine types, use ACCELERATOR_OPTIMIZED_A3
For A3 Mega machine types, use ACCELERATOR_OPTIMIZED_A3_MEGA
Note: For A4X Max, A4X, A4, or A3 Ultra machine types, you must
purchase your commitments by using the future reservations in
AI Hypercomputer consumption option. For more information,
see
Reserve capacity through your account team .
For G2 machine types, use GRAPHICS_OPTIMIZED
For G4 machine types, use GRAPHICS_OPTIMIZED_G4
For C2 machine types, use COMPUTE_OPTIMIZED
For C2D machine types, use COMPUTE_OPTIMIZED_C2D
For C3 machine types, use COMPUTE_OPTIMIZED_C3
For C3D machine types, use COMPUTE_OPTIMIZED_C3D
Caution : For C3 and C3D commitment types, the machine family that is
specified by the commitment type changes depending on the interface:
In the gcloud CLI and REST, the commitment type values use
Compute-optimized as the machine family, even though C3 and C3D are part
of the general-purpose machine family.
In the Google Cloud console, the commitment type values use the correct machine
series: General-Purpose .
Make sure to select the correct commitment type value that corresponds to the interface that
you're using.
For N1 machine types, use GENERAL_PURPOSE
For C4 machine types, use GENERAL_PURPOSE_C4
For C4A machine types, use GENERAL_PURPOSE_C4A
For C4D machine types, use GENERAL_PURPOSE_C4D
For N2 machine types, use GENERAL_PURPOSE_N2
For N2D machine types, use GENERAL_PURPOSE_N2D
For M1 machine types, use MEMORY_OPTIMIZED
For M3 machine types, use MEMORY_OPTIMIZED_M3
For Z3 machine types, use STORAGE_OPTIMIZED_Z3
COMMITTED_VCPUS : the number of vCPUs that you
want in your commitment. The number must be a positive integer.
COMMITTED_MEMORY : the amount, in MB, of
memory that you want in your commitment. For example, 10240MB.
COMMITTED_LOCAL_SSD : the amount, in GB, of
Local SSD storage that you want in your commitment. Each Local SSD disks
is 375 GB.
COMMITTED_ACCELERATOR_COUNT : the number of
GPUs that you want in your commitment.
COMMITTED_ACCELERATOR_TYPE : the GPU type that
you want in your commitment.
CUSTOM_END_DATE : Optional. A custom end date
for your term, which must be formatted as YYYY-MM-DD .
For example, to specify a custom end date of April 20, 2024, format it
as 2024-04-20.
END_TIME : 12 AM US and Canadian Pacific Time
(UTC-8 or UTC-7), as an offset of
Coordinated Universal Time (UTC) .
Specify this value only if you specified a custom end date for your
commitment. Specify one of the following values:
During daylight saving time: 07:00:00
During other times: 08:00:00
RESERVATION_URLs : a comma-separated list of
URLs of the existing reservations that you want to attach to the
commitment. For example, to attach two reservations, res-1 and res-2,
specify the following:
"https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/example-res-1",
"https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c/reservations/example-res-2"
Example: Purchase a commitment by attaching existing reservations
Suppose you have two reservations res-01 and res-02 in the
us-central1-a and us-central1-b zones of the project myproject.
Suppose that these reservations hold a combined capacity for 4 NVIDIA P100
GPUs and 4 Local SSD disks. To purchase a new commitment in the
us-central1 region of this project for these GPUs and Local SSD disks and
to use these existing reservations as attached reservations,
make the following POST request. Note that the example commitment also
contains vCPUs and memory.
POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/commitments
{
"name": "commitment-01",
"plan": "TWELVE_MONTH",
"type": "GENERAL_PURPOSE",
"resources":
[
{
"amount": "96",
"type": "VCPU"
},
{
"amount": "638976",
"type": "MEMORY"
},
{
"acceleratorType": "nvidia-tesla-p100",
"amount": "4",
"type": "ACCELERATOR"
},
{
"amount": "1536000",
"type": "LOCAL_SSD"
}
],
"existingReservations":
[
"https://www.googleapis.com/compute/v1/projects/my-project/zone/us-central1-a/reservations/res-01",
"https://www.googleapis.com/compute/v1/projects/my-project/zone/us-central1-b/reservations/res-02"
]
}
Create new reservations to attach
You can create your attached reservations while purchasing your commitment by
using the Google Cloud console, the Google Cloud CLI, or REST.
Permissions required for this task
To perform this task, you must have the following
permissions :
To create a commitment: compute.commitments.create on the project
To create reservations: compute.reservations.create on the project
Console Before you purchase a commitment using the Google Cloud console,
select the project that you want to use to purchase the commitment. If
CUD sharing
is enabled for a Cloud Billing account, you can purchase the
commitment using any project from that Cloud Billing account.
After you select the project, do the following:
In the Google Cloud console, go to the Committed use discounts
page.
Go to Committed use discounts
Click add_box Purchase commitment .
The Purchase a commitment page appears.
In the Name field, enter a name for your commitment.
In the Region field, select the region where you want to purchase
the commitment.
In the Commitment type field, select the machine family series for
your commitment. The following
commitment types
provide options for GPUs, Local SSD disks, or both:
For A2 machine types, select Accelerator-optimized A2
For A3 Edge and A3 High machine types, select Accelerator-optimized A3
For A3 Mega machine types, select Accelerator-optimized A3 Mega
Note: For A4X Max, A4X, A4, or A3 Ultra machine types, you must
purchase your commitments by using the future reservations in
AI Hypercomputer consumption option. For more information,
see
Reserve capacity through your account team .
For G2 machine types, select Graphics-optimized G2
For G4 machine types, select Graphics-optimized G4
For C2 machine types, select Compute-optimized C2
For C2D machine types, select Compute-optimized C2D
For C3 machine types, select General-Purpose C3
For C3D machine types, select General-Purpose C3D
Caution : For C3 and C3D commitment types, the machine family that is
specified by the commitment type changes depending on the interface:
In the gcloud CLI and REST, the commitment type values use
Compute-optimized as the machine family, even though C3 and C3D are part
of the general-purpose machine family.
In the Google Cloud console, the commitment type values use the correct machine
series: General-Purpose .
Make sure to select the correct commitment type value that corresponds to the interface that
you're using.
For C4 machine types, select General-Purpose C4
For C4A machine types, select General-Purpose C4A
For C4D machine types, select General-Purpose C4D
For N1 machine types, select General-Purpose N1
For N2 machine types, select General-Purpose N2
For N2D machine types, select General-Purpose N2D
For M1 machine types, select Memory-optimized M1/M2
For M3 machine types, select Memory-optimized M3
For Z3 machine types, select Storage-optimized Z3
To create a new reservation and attach it to the commitment, do the
following:
Select the Attach a new or existing reservation checkbox.
Click Create new reservation . The Create a new reservation
pane appears.
In the Name field, enter a name for the reservation.
Optional: In the Description field, enter a description.
In the Zone field, select the zone where you want the reserved
resources to be available.
In the Share type section, specify how you want to share this
reservation:
To create a single-project reservation, select Local .
To create a reservation that's shared with multiple projects,
select Shared . Then, click Add projects and select the
projects that you want.
In the Google Cloud Services section, specify whether to share
this reservation with other services like Google Kubernetes Engine or
Vertex AI.
In the Use with VM instance section, select how you want VMs to
consume your reservation:
To allow VMs with matching properties to automatically consume
this reservation, select Use reservation automatically .
To consume this reservation's resources only when specifically
targeted by name, select Select specific reservation .
In the Resource details section, do the following:
In the Number of VM instances field, enter the number of
VMs.
In the Machine configuration section, specify properties
by selecting Machine type . Select a machine type from the
list, or select Custom to specify the number of Cores
and amount of Memory .
Optional: If you want to reserve GPUs, then click Add GPU
and specify the GPU type and Number of GPUs for each
VM.
Optional: If you want to reserve Local SSD disks, then specify
the Number of disks and Interface type .
Optional: If you want to specify a group placement policy,
then in the Group placement policy list, select or create
a policy.
To finish specifying the properties for this reservation, click
Create and attach .
Optional: If you want to create and attach more new reservations,
then click Create new reservation again and repeat these
steps.
After you attach your reservations, Compute Engine
automatically populates the fields in the Commitment details
section to match the numbers and types of resources from your attached
reservations. If you manually entered values for any resources in the
Commitment details section before attaching reservations,
then your values are overwritten with values from the reservations.
In the Commitment details section, do the following:
In the Cores field, verify the pre-filled value. Optionally,
you can specify a different number of vCPUs.
In the Memory field, verify the pre-filled amount of memory in
GB. Optionally, you can specify a different amount. You can
specify memory only in increments of 0.25 GB. To specify a
custom memory value for your commitment, use gcloud CLI
or REST instead.
Expand the GPUs and local SSDs section and verify that the
types and numbers match between the commitment and attached
reservations, as follows:
In the GPU type field, verify the pre-filled GPU type.
In the Number of GPUs field, verify the pre-filled number
of GPUs.
In the Local SSDs field, verify the pre-filled number of
disks.
If you manually specify different values from the attached
reservations for any of these fields, then your commitment purchase
doesn't go through. For all GPUs and most local SSD disks, the
total numbers and types must match between your commitment
and attached reservations.
Note: This requirement doesn't apply to local Titanium SSD
disks for use with C4, C4A, C4D, H4D, Z3, or G4 machine series.
For these disks only, you don't need to attach any reservations and
you can choose to specify different numbers between your commitment
and attached reservations.
In the Term section, do the following:
To specify the
plan
for your commitment, select either 1 year or 3 years . The
plan determines the CUD rate and preset term duration of your
commitment.
Review the Start date field, which shows the date and time
when your commitment becomes active. This field is automatically
set to 12 AM US and Canadian Pacific Time on the day after your
current date.
Optional. To extend your commitment's
term
beyond the preset term duration that is defined by your commitment
plan, in the End date field, specify a custom end date for your
commitment. For more information, see
Extend commitment terms .
Optional. If you want your commitment to
automatically renew
at the end of its term, then select the Auto-renew commitment
checkbox.
In the Summary pane, review your commitment details and any
potential quota limitations.
To finish purchasing your commitment, do the following:
Navigate to the bottom of the page.
Review the Disclosures section that contains information about
fees, discount eligibility, and terms and conditions.
To confirm your acceptance of the
commitment price
and service specific terms ,
select the checkbox.
Click Purchase .
gcloud To create your attached reservations while purchasing your commitment, run
the gcloud compute commitments create command .
Note: You can't use the Google Cloud CLI to create your attached reservations
using instance templates. Instead, you must manually specify the VM
properties for your reservations.
Depending on whether you want to attach a single reservation or multiple
reservations, run the command in one of the following ways:
To create and attach a single reservation to your commitment, define
the properties of the attached reservation by running the following
command:
gcloud compute commitments create COMMITMENT_NAME \
--region=REGION \
--project=PROJECT_ID \
--plan PLAN \
--type COMMITMENT_TYPE
--resources=vcpu=COMMITTED_VCPUS ,memory=COMMITTED_MEMORY ,local-ssd=COMMITTED_LOCAL_SSD \
--resources-accelerator=count=COMMITTED_ACCELERATOR_COUNT ,type=COMMITTED_ACCELERATOR_TYPE \
--custom-end-time=CUSTOM_END_DATE \
--reservation=RESERVATION_NAME \
--reservation-zone=RESERVATION_ZONE \
--machine-type=RESERVED_MACHINE_TYPE \
--require-specific-reservation=REQUIRE_SPECIFIC_RESERVATION_VALUE \
--vm-count=NUMBER_OF_RESERVED_VMs \
--accelerator=type=RESERVED_ACCELERATOR_TYPE ,count=RESERVED_ACCELERATOR_COUNT \
--local-ssd=interface=INTERFACE_1 ,size=375 \
--local-ssd=interface=INTERFACE_2 ,size=375 \
--minimum-cpu-platform=MINIMUM_CPU_PLATFORM \
--share-setting=SHARE_SETTING \
--share-with=CONSUMER_PROJECT_ID_1 ,CONSUMER_PROJECT_ID_2
To create and attach multiple reservations to your commitment, define
the reservation's properties using a YAML file and then specify that
YAML file in the command that you use to purchase your commitment.
Optionally, you can also use this YAML file approach to create and
attach a single reservation to your commitment. To create your attached
reservations using this approach, do the following:
Create the YAML file in the current directory and specify the
configuration that you want for each attached reservation. For
example, to specify the configuration of a shared reservation
shared with two projects that specifies GPUs, two Local SSD disks,
and a minimum CPU platform, include the following text in your YAML
file:
- reservation : RESERVATION_NAME
reservation_zone : RESERVATION_ZONE
require_specific_reservation : REQUIRE_SPECIFIC_RESERVATION_VALUE
vm_count : NUMBER_OF_RESERVED_VMs
machine_type : RESERVED_MACHINE_TYPE
accelerator :
- count : RESERVED_ACCELERATOR_COUNT
type : RESERVED_ACCELERATOR_TYPE
localssd :
- interface : INTERFACE_1
size : 375
- interface : INTERFACE_2
size : 375
project : OWNER_PROJECT_ID
minimum-cpu-platform : MINIMUM_CPU_PLATFORM
share-setting : SHARE_SETTING
share-with :
- CONSUMER_PROJECT_ID_1
- CONSUMER_PROJECT_ID_2
To specify the configuration for multiple reservations, repeat these
properties for each reservation that you want to create. You can
attach any number of existing reservations that you want to your
commitment.
Run the gcloud compute commitments create command and include
the --reservation-from-file flag.
gcloud compute commitments create COMMITMENT_NAME \
--region REGION \
--project PROJECT_ID \
--plan PLAN \
--type COMMITMENT_TYPE \
--resources=vcpu=COMMITTED_VCPUS ,memory=COMMITTED_MEMORY ,local-ssd=COMMITTED_LOCAL_SSD \
--resources-accelerator=count=COMMITTED_ACCELERATOR_COUNT ,type=COMMITTED_ACCELERATOR_TYPE \
--reservations-from-file=YAML_FILE
Replace the following with the corresponding properties of the commitment
and the attached reservations:
Commitment
COMMITMENT_NAME : the name of the commitment.
REGION : the region where the commitment is
located.
PROJECT_ID : the ID of the project where you
want to purchase the commitment with the attached reservations.
PLAN : the commitment plan, which
determines your CUD rate and the preset term duration. Specify
12-month or 36-month.
CUSTOM_END_DATE : Optional. A custom end date
for your term, which must be formatted as
YYYY-MM-DD . For example, to specify a custom
end date of April 20, 2024, format it as 2024-04-20.
COMMITMENT_TYPE : the commitment type. The
following commitment types provide options for GPUs, Local SSD disks,
or both:
For A2 machine types, use accelerator-optimized
For A3 Edge and A3 High machine types, use accelerator-optimized-a3
For A3 Mega machine types, use accelerator-optimized-a3-mega
Note: For A4X Max, A4X, A4, or A3 Ultra machine types, you must
purchase your commitments by using the future reservations in
AI Hypercomputer consumption option. For more information,
see
Reserve capacity through your account team .
For G2 machine types, use graphics-optimized
For G4 machine types, use graphics-optimized-g4
For C2 machine types, use compute-optimized
For C2D machine types, use compute-optimized-c2d
For C3 machine types, use compute-optimized-c3
For C3D machine types, use compute-optimized-c3d
Caution : For C3 and C3D commitment types, the machine family that is
specified by the commitment type changes depending on the interface:
In the gcloud CLI and REST, the commitment type values use
Compute-optimized as the machine family, even though C3 and C3D are part
of the general-purpose machine family.
In the Google Cloud console, the commitment type values use the correct machine
series: General-Purpose .
Make sure to select the correct commitment type value that corresponds to the interface that
you're using.
For N1 machine types, use general-purpose
For C4 machine types, use general-purpose-c4
For C4A machine types, use general-purpose-c4a
For C4D machine types, use general-purpose-c4d
For N2 machine types, use general-purpose-n2
For N2D machine types, use general-purpose-n2d
For M1 machine types, use memory-optimized
For M3 machine types, use memory-optimized-m3
For Z3 machine types, use storage-optimized-z3
COMMITTED_VCPUS : the number of vCPUs that
you want in your commitment. The number must be a positive integer.
COMMITTED_MEMORY : the amount, in MB or GB,
of memory that you want in your commitment. For example, 10GB or
10240MB. If you don't specify a unit, Compute Engine uses GB
as the unit.
COMMITTED_LOCAL_SSD : the amount, in GB, of
Local SSD storage that you want in your commitment. Each Local SSD
disk is 375 GB.
COMMITTED_ACCELERATOR_COUNT : the number of
GPUs that you want in your commitment.
COMMITTED_ACCELERATOR_TYPE : the GPU type
that you want in your commitment.
YAML_FILE : The path to the YAML file that
contains the configuration of the attached reservations.
Attached reservations
RESERVATION_NAME : the name of the attached
reservation.
RESERVATION_ZONE : the zone of the attached
reservation.
REQUIRE_SPECIFIC_RESERVATION_VALUE : specifies
if the attached reservation is a specifically targeted reservation;
either true or false. For more information about specifically
targeted reservations, see
How reservations work .
NUMBER_OF_RESERVED_VMS : the number of VMs
that you want to reserve in the attached reservation.
RESERVED_MACHINE_TYPE : the
machine type that you want for the
VMs in your attached reservation.
RESERVED_ACCELERATOR_COUNT : the number of
GPUs you want to add, per VM, in the attached reservation.
RESERVED_ACCELERATOR_TYPE :
the type of accelerator you want to add in
the attached reservation.
INTERFACE_1 and
INTERFACE_2 : the type of interface you
want the Local SSD disks for each
reserved VM to use. Valid options are: scsi and nvme. Each Local
SSD disk is 375 GB. Repeat the local_ssd parameter for each
Local SSD disk that you want to add. You can specify up to 24 Local
SSD disks.
OWNER_PROJECT_ID : the ID of the project
where you want to purchase the commitment with the attached
reservation. Specify this field if you want to share your attached
reservation across multiple consumer projects.
MINIMUM_CPU_PLATFORM : the minimum
CPU platform that you want to specify for the attached reservation.
SHARE_SETTING : the type of sharing for the
attached reservation. Specify this field with the value as projects
if you want to share your attached reservation across multiple
consumer projects. Exclude this field if you want create a
single-project reservation.
CONSUMER_PROJECT_ID_1 and
CONSUMER_PROJECT_ID_2 :
the project IDs
of the projects that can share this reservation, for example
project-1 and project-2. You can include up to 100 consumer
projects. These projects must be in the same organization as the
owner project. Don't include the ID of the project where you create
this reservation, as that project is allowed to consume this
reservation by default. Exclude these fields if you want to create
a single-project reservation.
Compute Engine creates the commitment and the attached reservations
only if there are enough resources of the specified machine type in the
target zone, and sufficient quota, at the time of your request. If your
purchase was successful, you see a success message similar to the following:
Created[https://www.googleapis.com/compute/v1/projects/your-project/regions/your-region/commitments/your-commitment-name]
Examples for purchasing commitments by creating new reservations to attach
The following example scenarios and commands show how you can purchase a
commitment for GPUs, Local SSD disks, or both by creating new reservations
to attach to that commitment.
Example 1: Purchase a commitment for GPUs by attaching a single new reservation
Suppose you want to purchase a commitment commitment-01 in the
us-central1 region that includes 4 NVIDIA V100 GPUs. You want to create a
new reservation reservation-01 as the attached reservation for
those GPUs. Suppose you also want to specify Compute Engine to use
those reserved GPUs across 2 n1-standard-32 VMs in the us-central1-a
zone. To purchase this example commitment with its attached reservation, run
the following command:
gcloud compute commitments create commitment-01 \
--region=us-central1 \
--project=myproject \
--resources=vcpu=96,memory=624GB \
--resources-accelerator=type=nvidia-tesla-v100,count=4 \
--plan 12-month \
--reservation=reservation-01 \
--reservation-zone=us-central1-a \
--machine-type=n1-standard-32 \
--accelerator=type=nvidia-tesla-v100,count=2 \
--vm-count=2
Example 2: Purchase a commitment for GPUs without committing to vCPUs or memory
To commit to and reserve GPUs and Local SSD disks without committing to
vCPUs or memory, specify 0 as the value for vCPU and memory quantities.
For example, suppose you want to purchase a commitment commitment-02 for a
single NVIDIA P4 GPU in the us-west2 region. You also want to create a new
reservation as the attached reservation and specify
Compute Engine to use the reserved GPU on an n1-standard-2 VM in the
us-west2-b zone. To purchase this example commitment with its attached
reservation, run the following command:
gcloud compute commitments create commitment-02 \
--region=us-west2 \
--project=myproject \
--resources=vcpu=0,memory=0 \
--resources-accelerator=type=nvidia-tesla-p4,count=1 \
--plan 12-month \
--reservation=reservation-01 \
--reservation-zone=us-west2-b \
--machine-type=n1-standard-2 \
--accelerator=type=nvidia-tesla-p4,count=1 \
--vm-count=1
Example 3: Purchase a commitment for GPUs and Local SSD disks by attaching multiple new reservations
Suppose you want to purchase a commitment commitment-03 for 1
NVIDIA V100 GPU and 2 Local SSD disks in the us-central1 region. You also
want to create and attach two reservations in the
us-central1-a zone. In the first reservation, res-01, you want to
reserve 1 n1-standard-2 VM with 1 GPU. You want to make res-01 a
targeted reservation, which means that you must specifically target that
reservation by name to use its reserved VMs. In the second reservation,
res-02, you want to reserve 1 n1-standard-8 VM with 2 types of
attached Local SSD disks.
To purchase this example commitment with the attached reservations,
first create the YAML file with the properties of both reservations.
- reservation: res-01
reservation_zone: us-central1-a
require_specific_reservation: true
vm_count: 1
machine_type: n1-standard-2
accelerator:
- count: 1
type: nvidia-tesla-v100
- reservation: res-02
reservation_zone: us-central1-a
vm_count: 1
machine_type: n1-standard-8
local_ssd:
- interface: scsi
size: 375
- interface: nvme
size: 375
After you create the YAML file, to finish purchasing the commitment with its
attached reservations, run the following command. Note that the example
commitment also contains vCPU and memory resources.
gcloud compute commitments create commitment-03 \
--region=us-central1 \
--project=myproject \
--resources=vcpu=96,memory=624,local-ssd=750 \
--resources-accelerator=type=nvidia-tesla-v100,count=1 \
--plan 12-month \
--reservations-from-file=YAML_FILE
REST To create your attached reservations while purchasing your commitment,
make a POST request to the
regionCommitments.insert method .
In your request, include the reservations field to define a list of all
the new reservations that you want to create and attach. You can attach any
number of existing reservations that you want to your commitment.
To create your new reservation by manually specifying all the VM
properties, include the instanceProperties field and exclude the
sourceInstanceTemplate field.
For example, to manually specify the configuration of a shared reservation
shared with two projects that specifies GPUs, two Local SSD disks, and a
minimum CPU platform, make the following request:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION /commitments
{
"name": "COMMITMENT_NAME ",
"plan": "PLAN ",
"type": "COMMITMENT_TYPE ",
"resources":
[
{
"amount": "COMMITTED_VCPUS ",
"type": "VCPU"
},
{
"amount": "COMMITTED_MEMORY ",
"type": "MEMORY"
},
{
"acceleratorType": "COMMITTED_ACCELERATOR_TYPE ",
"amount": "COMMITTED_ACCELERATOR_COUNT ",
"type": "ACCELERATOR"
},
{
"amount": "COMMITTED_LOCAL_SSD ",
"type": "LOCAL_SSD"
}
],
"customEndTimestamp": "CUSTOM_END_DATE TEND_TIME Z",
"reservations":
[
{
"name": "RESERVATION_NAME ",
"specificReservation":
{
"count": "NUMBER_OF_RESERVED_VMS ",
"instanceProperties":
{
"guestAccelerators":
[
{
"acceleratorCount": "RESERVED_ACCELERATOR_COUNT ",
"acceleratorType": "RESERVED_ACCELERATOR_TYPE "
}
],
"localSsds":
[
{
"diskSizeGb": "375",
"interface": "RESERVED_INTERFACE_1 "
},
{
"diskSizeGb": "375",
"interface": "RESERVED_INTERFACE_2 "
}
],
"machineType": "RESERVED_MACHINE_TYPE ",
"minCpuPlatform": "MINIMUM_CPU_PLATFORM "
}
},
"specificReservationRequired": "REQUIRE_SPECIFIC_RESERVATION_VALUE ",
"zone": "RESERVED_ZONE ",
"shareSettings":
{
"shareType": "SPECIFIC_PROJECTS",
"projectMap":
{
"CONSUMER_PROJECT_ID_1 ":
{
"projectId": "CONSUMER_PROJECT_ID_1 "
},
"CONSUMER_PROJECT_ID_2 ":
{
"projectId": "CONSUMER_PROJECT_ID_2 "
}
}
}
}
]
}
To create your new reservation by specifying an instance template, include
the sourceInstanceTemplate field and exclude the instanceProperties
field.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION /commitments
{
"name": "COMMITMENT_NAME ",
"plan": "PLAN ",
"type": "COMMITMENT_TYPE ",
"resources":
[
{
"amount": "COMMITTED_VCPUS ",
"type": "VCPU"
},
{
"amount": "COMMITTED_MEMORY ",
"type": "MEMORY"
},
{
"acceleratorType": "COMMITTED_ACCELERATOR_TYPE ",
"amount": "COMMITTED_ACCELERATOR_COUNT ",
"type": "ACCELERATOR"
},
{
"amount": "COMMITTED_LOCAL_SSD ",
"type": "LOCAL_SSD"
}
],
"customEndTimestamp": "CUSTOM_END_DATE TEND_TIME Z",
"reservations":
[
{
"name": "RESERVATION_NAME ",
"specificReservation":
{
"count": "NUMBER_OF_RESERVED_VMS ",
"sourceInstanceTemplate": "projects/PROJECT_ID /LOCATION /instanceTemplates/INSTANCE_TEMPLATE_NAME "
},
"specificReservationRequired": "REQUIRE_SPECIFIC_RESERVATION_VALUE ",
"zone": "RESERVED_ZONE ",
"shareSettings":
{
"shareType": "SPECIFIC_PROJECTS",
"projectMap":
{
"CONSUMER_PROJECT_ID_1 ":
{
"projectId": "CONSUMER_PROJECT_ID_1 "
},
"CONSUMER_PROJECT_ID_2 ":
{
"projectId": "CONSUMER_PROJECT_ID_2 "
}
}
}
}
]
}
Replace the following with the corresponding properties of the commitment
and the attached reservations:
Commitment
COMMITMENT_NAME : the name of the commitment.
REGION : the region where the commitment is
located.
PROJECT_ID : the ID of the project where you
want to purchase the commitment with the attached reservations.
PLAN : the commitment plan, which
determines your CUD rate and the preset term duration. Specify
TWELVE_MONTH or THIRTY_SIX_MONTH.
COMMITMENT_TYPE : the commitment type. The
following commitment types provide options for GPUs, Local SSD disks,
or both:
For A2 machine types, use ACCELERATOR_OPTIMIZED
For A3 Edge and A3 High machine types, use ACCELERATOR_OPTIMIZED_A3
For A3 Mega machine types, use ACCELERATOR_OPTIMIZED_A3_MEGA
Note: For A4X Max, A4X, A4, or A3 Ultra machine types, you must
purchase your commitments by using the future reservations in
AI Hypercomputer consumption option. For more information,
see
Reserve capacity through your account team .
For G2 machine types, use GRAPHICS_OPTIMIZED
For G4 machine types, use GRAPHICS_OPTIMIZED_G4
For C2 machine types, use COMPUTE_OPTIMIZED
For C2D machine types, use COMPUTE_OPTIMIZED_C2D
For C3 machine types, use COMPUTE_OPTIMIZED_C3
For C3D machine types, use COMPUTE_OPTIMIZED_C3D
Caution : For C3 and C3D commitment types, the machine family that is
specified by the commitment type changes depending on the interface:
In the gcloud CLI and REST, the commitment type values use
Compute-optimized as the machine family, even though C3 and C3D are part
of the general-purpose machine family.
In the Google Cloud console, the commitment type values use the correct machine
series: General-Purpose .
Make sure to select the correct commitment type value that corresponds to the interface that
you're using.
For N1 machine types, use GENERAL_PURPOSE
For C4 machine types, use GENERAL_PURPOSE_C4
For C4A machine types, use GENERAL_PURPOSE_C4A
For C4D machine types, use GENERAL_PURPOSE_C4D
For N2 machine types, use GENERAL_PURPOSE_N2
For N2D machine types, use GENERAL_PURPOSE_N2D
For M1 machine types, use MEMORY_OPTIMIZED
For M3 machine types, use MEMORY_OPTIMIZED_M3
For Z3 machine types, use STORAGE_OPTIMIZED_Z3
COMMITTED_VCPUS : the number of vCPUs that
you want in your commitment. The number must be a positive integer.
COMMITTED_MEMORY : the amount, in MB, of
memory that you want in your commitment. For example, 10240MB.
COMMITTED_LOCAL_SSD : the amount, in GB, of
Local SSD storage that you want in your commitment. Each Local SSD
disk is 375 GB.
COMMITTED_ACCELERATOR_COUNT : the number of
GPUs that you want in your commitment.
COMMITTED_ACCELERATOR_TYPE : the GPU type
that you want in your commitment.
CUSTOM_END_DATE : Optional. A custom end date
for your term, which must be formatted as
YYYY-MM-DD . For example, to specify a custom
end date of April 20, 2024, format it as 2024-04-20.
END_TIME : 12 AM US and Canadian Pacific Time
(UTC-8 or UTC-7), as an offset of
Coordinated Universal Time (UTC) .
Specify this value only if you specified a custom end date for your
commitment. Specify one of the following values:
During daylight saving time: 07:00:00
During other times: 08:00:00
Attached reservations
RESERVATION_NAME : the name of the attached
reservation.
RESERVATION_ZONE : the zone of the attached
reservation.
REQUIRE_SPECIFIC_RESERVATION_VALUE : specifies
if the attached reservation is a specifically targeted reservation;
either true or false. For more information about specifically
targeted reservations, see
How reservations work .
NUMBER_OF_RESERVED_VMS : the number of VMs
that you want to reserve in the attached reservation.
RESERVED_MACHINE_TYPE : the
machine type that you want for the
VMs in your attached reservation.
RESERVED_ACCELERATOR_COUNT : the number of
GPUs you want to add, per VM, in the attached reservation.
RESERVED_ACCELERATOR_TYPE :
the type of accelerator you want to add in
the attached reservation.
INTERFACE_1 and
INTERFACE_2 : the type of interface you want
the Local SSD disks for each reserved
VM to use. Valid options are: scsi and nvme. Each Local SSD disk
is 375 GB. Repeat the localSsds parameter for each Local SSD
disk that you want to add. You can specify up to 24 Local SSD disks.
MINIMUM_CPU_PLATFORM : the minimum
CPU platform that you want to specify for the attached reservation.
INSTANCE_TEMPLATE_NAME : the name of the
instance template that you want to use to create your attached
reservation.
SHARE_SETTING : the type of sharing for the
attached reservation. Specify this field with the value as
SPECIFIC_PROJECTS if you want to share your attached reservation
across multiple consumer projects. Exclude this field if you want
create a single-project reservation.
CONSUMER_PROJECT_ID_1 and
CONSUMER_PROJECT_ID_2 :
the project IDs
of the projects that can share this reservation; for example,
project-1 and project-2. You can include up to 100 consumer
projects. These projects must be in the same organization as the
owner project. Don't include the ID of the project where you create
this reservation, as that project is allowed to consume this
reservation by default. Exclude these fields if you want to create a
single-project reservation.
Compute Engine creates the commitment and the attached reservations only
if there are enough resources of the specified machine type in the target
zone, and sufficient quota, at the time of your request. If your purchase
was successful, Compute Engine returns a 200 status for your
REST API request.
Examples for purchasing commitments by creating new reservations to attach
The following example scenarios and commands show how you can purchase a
commitment for GPUs, Local SSD disks, or both by creating new reservations
to attach to that commitment.
Example 1: Purchase a commitment for GPUs by attaching a single new reservation
Suppose you want to purchase a commitment commitment-01 in the
us-central1 region that includes 4 NVIDIA V100 GPUs. You want to
create a new reservation reservation-01 as the attached
reservation for those GPUs. Suppose you also want to specify
Compute Engine to use those reserved GPUs across 2 n1-standard-8
VMs in the us-central1-a zone. To purchase this example commitment
with its attached reservation, make the following POST request:
POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/commitments
{
"name": "commitment-01",
"plan": "TWELVE_MONTH",
"type": "GENERAL_PURPOSE",
"resources":
[
{
"amount": "96",
"type": "VCPU"
},
{
"amount": "638976",
"type": "MEMORY"
},
{
"acceleratorType": "nvidia-tesla-v100",
"amount": "4",
"type": "ACCELERATOR"
}
],
"reservations":
[
{
"name": "reservation-01",
"specificReservation":
{
"count": "2",
"instanceProperties":
{
"guestAccelerators":
[
{
"acceleratorCount": 2,
"acceleratorType": "nvidia-tesla-v100"
}
],
"machineType": "n1-standard-8"
}
},
"specificReservationRequired": false,
"zone": "us-central1-a"
}
]
}
Example 2: Purchase a commitment for GPUs without committing to vCPUs or memory
To commit to and reserve GPUs and Local SSD disks without committing to
vCPUs or memory, specify 0 as the value for vCPU and memory quantities.
For example, suppose you want to purchase a commitment commitment-02 for
a single NVIDIA P4 GPU in the us-west2 region. You also want to create
a new reservation as the attached reservation and specify
Compute Engine to use the reserved GPU on an n1-standard-2 VM in
the us-west2-b zone. To purchase this example commitment with its attached
reservation, make the following POST request:
POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-west2/commitments
{
"name": "commitment-02",
"plan": "TWELVE_MONTH",
"type": "GENERAL_PURPOSE",
"resources":
[
{
"amount": "0",
"type": "VCPU"
},
{
"amount": "0",
"type": "MEMORY"
},
{
"acceleratorType": "nvidia-tesla-p4",
"amount": "4",
"type": "ACCELERATOR"
}
],
"reservations":
[
{
"name": "reservation-01",
"specificReservation":
{
"count": "1",
"instanceProperties":
{
"guestAccelerators":
[
{
"acceleratorCount": 4,
"acceleratorType": "nvidia-tesla-p4"
}
],
"machineType": "n1-standard-2"
}
},
"specificReservationRequired": false,
"zone": "us-west2-b"
}
]
}
Example 3: Purchase a commitment for GPUs and Local SSD disks by attaching multiple new reservations
Suppose you want to purchase a commitment commitment-03 for 1
NVIDIA V100 GPU and 2 Local SSD disks in the us-central1 region. You also
want to create and attach two reservations in the
us-central1-a zone. In the first reservation, res-01, you want to
reserve 1 n1-standard-2 VM with 1 GPU. You want to make res-01 a
targeted reservation, which means that you must specifically target that
reservation by name to use its reserved VMs. In the second reservation,
res-02, you want to reserve 1 n1-standard-8 VM with 2 types of
attached Local SSD disks. To purchase this example commitment with the
attached reservations, make the following POST request. Note that the
example commitment also contains vCPU and memory resources.
POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/commitments
{
"name": "commitment-03",
"plan": "TWELVE_MONTH",
"type": "GENERAL_PURPOSE",
"resources":
[
{
"amount": "96",
"type": "VCPU"
},
{
"amount": "638976",
"type": "MEMORY"
},
{
"acceleratorType": "nvidia-tesla-v100",
"amount": "1",
"type": "ACCELERATOR"
},
{
"amount": "768000",
"type": "LOCAL_SSD"
}
],
"reservations":
[
{
"name": "res-01",
"specificReservation":
{
"count": "1",
"instanceProperties":
{
"guestAccelerators":
[
{
"acceleratorCount": 1,
"acceleratorType": "nvidia-tesla-v100"
}
],
"machineType": "n1-standard-2"
}
},
"specificReservationRequired": true,
"zone": "us-central1-a"
},
{
"name": "res-02",
"specificReservation":
{
"count": "1",
"instanceProperties":
{
"localSsds":
[
{
"diskSizeGb": "375",
"interface": "SCSI"
},
{
"diskSizeGb": "375",
"interface": "NVME"
}
],
"machineType": "n1-standard-8"
}
},
"specificReservationRequired": false,
"zone": "us-central1-a"
}
]
}
Replace reservations that are attached to commitments
Replace your commitment's existing attached reservation with a new
reservation if you want to modify the types and numbers of VMs that use your
committed resources.
The replacement reservation will always be a newly created reservation.
To replace an attached reservation, you must specify the properties of the
reservation that you want use as a replacement. Compute Engine then
automatically creates a new reservation with these properties and uses it to
replace your attached reservation. You can't use an existing reservation
to replace your attached reservation.
Allowed changes
When you replace a commitment's existing attached reservation with a new
reservation, you can request any of the following changes:
You can reserve VMs from a different machine type. However, you must still
reserve VMs from the same machine series in order to continue receiving
CUDs for your reserved resources.
You can change the number of VMs that you want to reserve.
You can change the quantity of GPUs and Local SSD disks that is attached per
VM as long as the total quantity of reserved GPUs and Local SSD disks
remain the same.
You can specify your replaced reservations to be either single-project
(also called local on the Google Cloud console) or shared reservations.
Requirements
When you replace your commitment's attached reservation with a new one, your
request must meet all of the following requirements:
You can replace only one attached reservation at a time with exactly one
new attached reservation. To replace an attached reservation, simultaneously
remove an existing attached reservation by setting its VM count to 0
and define a new attached reservation that you want to replace it.
The new reservation must exist in the same project as the commitment.
The new reservation must be located in the same zone as the removed
reservation.
The amount and types of GPUs specified in the new reservation must match the
removed reservation.
The numbers and types of Local SSD disks specified in the new reservation
must match the removed reservation.
You can only change up to 100 VMs per request. To make a change that
involves more than 100 VMs, divide the change into multiple smaller
requests or reach out to Google Cloud Support.
Your request to replace a reservation also depends on the capacity availability
at that time. If the capacity for a request is unavailable, the request fails
and returns a resource availability error, which you can try to resolve by
modifying or postponing the request.
For more information, see the documentation for
troubleshooting resource availability .
If your request to replace an attached reservation fails, then the attached
reservation and your existing reserved resources remain unaffected. To preserve
your capacity, wait to make any corresponding changes to your VMs
until after your request to replace a reservation is successful.
Steps to replace an attached reservation
You can replace a commitment's reservations using the Google Cloud CLI or
REST.
gcloud To replace reservations that are attached to commitments, do the following:
Create a YAML file in the current directory with the configurations
of the following attached reservations:
The current reservation that you want to replace.
To retrieve the details of this reservation, see
View details of a reservation .
The new replacement reservation.
The contents of the YAML file are similar to the following:
- reservation : CURRENT_RESERVATION_NAME
reservation_zone : CURRENT_RESERVATION_ZONE
vm_count : 0
machine_type : CURRENT_RESERVATION_MACHINE_TYPE
accelerator :
- count : CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS
type : CURRENT_RESERVATION_ACCELERATOR_TYPE
local_ssd :
- interface : CURRENT_RESERVATION_INTERFACE_1
size : 375
- interface : CURRENT_RESERVATION_INTERFACE_2
size : 375
project : CURRENT_RESERVATION_PROJECT_ID
share_setting : CURRENT_RESERVATION_SHARE_SETTING
share_with :
- CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1
- CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2
- reservation : REPLACEMENT_RESERVATION_NAME
reservation_zone : REPLACEMENT_RESERVATION_ZONE
vm_count : REPLACEMENT_RESERVATION_NUMBER_OF_VMs
machine_type : REPLACEMENT_RESERVATION_MACHINE_TYPE
accelerator :
- count : REPLACEMENT_RESERVATION_ACCELERATOR_COUNT
type : REPLACEMENT_RESERVATION_ACCELERATOR_TYPE
local_ssd :
- interface : REPLACEMENT_RESERVATION_INTERFACE_1
size : 375
- interface : REPLACEMENT_RESERVATION_INTERFACE_2
size : 375
project : REPLACEMENT_RESERVATION_PROJECT_ID
share_setting : REPLACEMENT_RESERVATION_SHARE_SETTING
share_with :
- REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1
- REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2
Replace the following with the corresponding properties of the current
and replacement reservations:
Current reservation For the current reservation, all of the following properties must be
exactly the same as when you viewed the reservation. Omit the fields
for any properties that the current reservation does not already have.
CURRENT_RESERVATION_NAME : the name of the
current attached reservation.
CURRENT_RESERVATION_ZONE : the zone of the
current attached reservation.
CURRENT_RESERVATION_MACHINE_TYPE : the
machine type of the current attached
reservation.
CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS :
the number of GPUs reserved in the current attached reservation.
CURRENT_RESERVATION_ACCELERATOR_TYPE : the
type of accelerator reserved in the current
attached reservation.
CURRENT_RESERVATION_INTERFACE_1 and
CURRENT_RESERVATION_INTERFACE_2 : the type
of interface that the Local SSD disk
for each reserved VM use in the current attached reservation.
Valid options are: scsi and nvme. Each Local SSD disk is
375 GB. Repeat the local_ssd parameter for all the reserved
Local SSD disks.
CURRENT_RESERVATION_PROJECT_ID :
the project ID of the current project that has the
commitment and the attached reservation. Specify this field
if your current attached reservation is shared across multiple
consumer projects.
CURRENT_RESERVATION_SHARE_SETTING :
The type of sharing for the current reservation. Specify this field
with the value as projects if your current attached reservation is
shared across multiple consumer projects.
CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1
and
CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2 :
the project IDs
of the projects that you share the current attached reservation with,
for example project-1 and project-2.
Replacement reservation For the replacement reservation, set the following properties as
required. Ensure that you meet all the requirements
when you specify these properties. Omit any additional fields that
you don't want to use.
REPLACEMENT_RESERVATION_NAME : the name of
the new replacement reservation.
REPLACEMENT_RESERVATION_ZONE : the zone of
the new replacement reservation.
REPLACEMENT_RESERVATION_NUMBER_OF_VMS : the
number of VMs that you want to reserve in the new replacement
reservation.
REPLACEMENT_RESERVATION_MACHINE_TYPE : the
machine type that you want for the
VMs in your new replacement reservation.
For predefined machine types, use the format
MACHINE_FAMILY -standard-CPUS ;
for example, n2-standard-4.
For custom machine types, use the format
MACHINE_FAMILY -custom-CPUS -MEMORY ;
for example n2-custom-4-5120. For a full list of restrictions,
read the specifications
for custom machine types.
Replace the following:
MACHINE_FAMILY : the family of machine
types; for example, specify n2 for N2 VMs.
CPUS : the number of vCPUs .
MEMORY : the total memory for a
reserved VM. Memory must be a multiple of 256 MB and must
be supplied in MB; for example, to create an N2 VM with 4
vCPUs and 5 GB of memory, which is 5120 MB, use
n2-custom-4-5120.
REPLACEMENT_RESERVATION_NUMBER_OF_ACCELERATORS :
the number of GPUs you want to add, per VM, in the
replacement reservation.
REPLACEMENT_RESERVATION_ACCELERATOR_TYPE :
the type of accelerator you want to add in
the replacement reservation.
REPLACEMENT_RESERVATION_INTERFACE_1 and
REPLACEMENT_RESERVATION_INTERFACE_2 : the
type of interface you want the
Local SSD disks
for each reserved VM to use. Valid options are: scsi and nvme.
Each Local SSD disk is 375 GB. Repeat the local_ssd parameter
for each Local SSD disk that you want to add. You can specify up to
24 Local SSD disks.
REPLACEMENT_RESERVATION_PROJECT_ID :
the project ID of the current project that has the
commitment and the attached reservation. Specify this field
if you want to share your replacement reservation across multiple
consumer projects.
REPLACEMENT_RESERVATION_SHARE_SETTING :
the type of sharing for the replacement reservation.
Specify this field with the value as projects if you want to share
your replacement reservation across multiple consumer projects.
REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1
and
REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2 :
the project IDs
of the projects that can share this reservation, for example
project-1,project-2. You can include up to 100 consumer projects.
These projects must be in the same organization as the owner project.
Don't include the REPLACEMENT_RESERVATION_PROJECT_ID ,
which is already allowed to consume this reservation by default.
Run the gcloud beta compute commitments update-reservations
command and specify the path to the YAML file using the
--reservations-from-file flag.
gcloud beta compute commitments update-reservations COMMITMENT_NAME \
--project= PROJECT_ID \
--region= REGION \
--reservations-from-file= YAML_FILE
Replace the following:
COMMITMENT_NAME : the name of the
commitment with the attached reservation.
PROJECT_ID : the project ID of the
commitment with the attached reservation.
REGION : The region where the commitment is
located.
YAML_FILE : The path to the YAML file that
contains the configuration of the current and replacement
reservations.
Example for replacing a reservation that is attached to a commitment
To demonstrate this, this section shows an
example commitment with an attached reservation
and how to replace the example attached reservation .
Example commitment with an attached reservation
For example, suppose that you want to update the attached reservations
for the my-commitment-with-reservations commitment,
that was purchased using the following command:
gcloud beta compute commitments create my-commitment-with-reservations \
--region=asia-east1 \
--resources=vcpu=16,memory=60GB,local-ssd=3000 \
--resources-accelerator=type=nvidia-tesla-p100,count=4 \
--plan=12-month \
--type=general-purpose \
--reservations-from-file=one-reservation.yaml
For this example, suppose that when this command was run,
one-reservation.yaml was a file in the current directory with the
following contents, that define an attached reservation named res-1.
- reservation : res-1
reservation_zone : asia-east1-a
vm_count : 4
machine_type : n1-standard-4
accelerator :
- count : 1
type : nvidia-tesla-p100
local_ssd :
- interface : scsi
size : 375
- interface : scsi
size : 375
This my-commitment-with-reservations commitment and the attached
reservation res-1 resulted in the following committed and reserved
resources:
Resource type
Resources in commitment (my-commitment-with-reservations)
Resources in current attached reservation (res-1)
vCPUs and memory
16 vCPUs and 60 GB
16 vCPUs and 60 GB (4 reserved n1-standard-4 VMs)*
GPUs
4 P100 GPUs
4 P100 GPUs
(1 P100 GPU per VM, for 4 VMs)*
Local SSD disks
3000 GB or 8 Local SSD disks
3000 GB or 8 Local SSD disks
(750 GB or 2 Local SSD disks per VM, for 4 VMs)*
* Specifically, the example
attached reservation, res-1, reserves 4 n1-standard-4
VMs, each with 1 P100 GPU and 2 Local SSD disks of scsi
interface type. The n1-standard-4
machine type
uses 4 vCPUs and 15 GB for each VM.
Replace the example attached reservation
Suppose you want to replace the attached reservation res-1 for the
with a new attached reservation res-2 and change the reserved resources
to the following:
Resource type
Resources in commitment (my-commitment-with-reservations)
Resources in current attached reservation (res-1)
Resources in replacement attached reservation (res-2)
vCPUs and memory
16 vCPUs and 60 GB
16 vCPUs and 60 GB (4 reserved n1-standard-4 VMs)*
16 vCPUs and 60 GB (2 reserved and shared n1-standard-8 VMs)†
GPUs
4 P100 GPUs
4 P100 GPUs (1 P100 GPU per VM, for 4 VMs)*
4 P100 GPUs (2 P100 GPUs per VM, for 2 VMs)†
Local SSD disks
3000 GB or 8 Local SSD disks
3000 GB or 8 Local SSD disks
(750 GB or 2 Local SSD disks per VM, for 4 VMs)*
3000 GB or 8 Local SSD disks
(1500 GB or 4 Local SSD disks per VM, for 2 VMs)*
* Specifically, the example
attached reservation, res-1, reserves 4 n1-standard-4
VMs, each with 1 P100 GPU and 2 Local SSD disks of scsi
interface type. The n1-standard-4
machine type
uses 4 vCPUs and 15 GB for each VM.
† Specifically, the replacement
attached reservation defines res-2, which reserves 2
n1-standard-8 VMs, each with 1 P100 GPU and 4 Local SSD disks
of scsi interface type. Additionally, res-2 is
shared with 2 other projects, project-1 and
project-2 and owned by the current project,
my-project. The n1-standard-8 machine
type uses 8 vCPUs and 30 GB for each VM.
To replace the attached reservation res-1 with res-2
for the my-commitment-with-reservations commitment, do the following:
Create a file named two-reservations.yaml in the current directory
that file contains the following contents:
- reservation : res-1
reservation_zone : asia-east1-a
vm_count : 0
machine_type : n1-standard-4
accelerator :
- count : 1
type : nvidia-tesla-p100
local_ssd :
- interface : scsi
size : 375
- interface : scsi
size : 375
- reservation : res-2
reservation_zone : asia-east1-a
vm_count : 2
machine_type : n1-standard-8
accelerator :
- count : 2
type : nvidia-tesla-p100
project : my-project
share_setting : projects
share_with :
- project-1
- project-2
local_ssd :
- interface : scsi
size : 375
- interface : scsi
size : 375
- interface : scsi
size : 375
- interface : scsi
size : 375
Run the following command:
gcloud beta compute commitments update-reservations my-commitment-with-reservations \
--region=asia-east1 \
--reservations-from-file=two-reservations.yaml
REST To replace reservations that are attached to commitments, make a POST
request using the regionCommitments.updateReservations
method.
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID /regions/COMMITMENT_ZONE /commitments/COMMITMENT_NAME /updateReservations
{
"reservations":
[
{
"name": "REPLACEMENT_RESERVATION_NAME ",
"specificReservation":
{
"count": "REPLACEMENT_RESERVATION_NUMBER_OF_VMS ",
"instanceProperties":
{
"guestAccelerators":
[
{
"acceleratorCount": "REPLACEMENT_RESERVATION_NUMBER_OF_ACCELERATORS ",
"acceleratorType": "REPLACEMENT_RESERVATION_ACCELERATOR_TYPE "
}
],
"localSsds":
[
{
"diskSizeGb": "375",
"interface": "REPLACEMENT_RESERVATION_INTERFACE_1 "
},
{
"diskSizeGb": "375",
"interface": "REPLACEMENT_RESERVATION_INTERFACE_2 "
}
],
"machineType": "REPLACEMENT_RESERVATION_MACHINE_TYPE "
}
},
"zone": "REPLACEMENT_RESERVATION_ZONE ",
"shareSettings":
{
"shareType": "SPECIFIC_PROJECTS",
"projectMap":
{
"REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1 ":
{
"projectId": "REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1 "
},
"REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2 ":
{
"projectId": "REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2 "
}
}
}
},
{
"name": "CURRENT_RESERVATION_NAME ",
"specificReservation":
{
"count": "0",
"instanceProperties":
{
"guestAccelerators":
[
{
"acceleratorCount": "CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS ",
"acceleratorType": "CURRENT_RESERVATION_ACCELERATOR_TYPE "
}
],
"localSsds":
[
{
"diskSizeGb": "375",
"interface": "CURRENT_RESERVATION_INTERFACE_1 "
},
{
"diskSizeGb": "375",
"interface": "CURRENT_RESERVATION_INTERFACE_2 "
}
],
"machineType": "CURRENT_RESERVATION_MACHINE_TYPE "
}
},
"zone": "CURRENT_RESERVATION_ZONE ",
"shareSettings":
{
"shareType": "SPECIFIC_PROJECTS",
"projectMap":
{
"CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1 ":
{
"projectId": "CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1 "
},
"CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2 ":
{
"projectId": "CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2 "
}
}
}
}
]
}
Replace the following with the corresponding properties of the commitment,
the current reservation, and the replacement reservation:
Commitment
COMMITMENT_NAME : the name of the commitment
with the attached reservation.
PROJECT_ID : the project ID of the commitment
with the attached reservation. This is also the project ID for the
current and attached reservations.
COMMITMENT_ZONE : the zone of the commitment
with the attached reservation.
Current reservation For the current reservation, all of the following properties must be
exactly the same as when you viewed the reservation. Omit the fields
for any properties that the current reservation does not already specify.
CURRENT_RESERVATION_NAME : the name of the
current attached reservation.
CURRENT_RESERVATION_ZONE : the zone of the
current attached reservation.
CURRENT_RESERVATION_MACHINE_TYPE : the
machine type of the current attached
reservation.
CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS : the
number of GPUs reserved in the current attached reservation.
CURRENT_RESERVATION_ACCELERATOR_TYPE : the
type of accelerator reserved in the current
attached reservation.
CURRENT_RESERVATION_INTERFACE_1 and
CURRENT_RESERVATION_INTERFACE_2 : the type
of interface that the Local SSD disks
for each reserved VM use in the current attached reservation.
Valid options are: scsi and nvme. Each Local SSD disk is 375 GB.
Repeat the localSsds parameter for all the reserved Local SSD disks.
CURRENT_RESERVATION_SHARE_SETTING :
The type of sharing for the current reservation. Specify this parameter
with the value as projects if your current attached reservation is
shared across multiple consumer projects.
CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1 and
CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2 :
the project IDs
of the projects that you share the current attached reservation with,
for example project-1 and project-2.
Replacement reservation For the replacement reservation, set the following properties as
required. Ensure that you meet all the requirements
when you specify these properties. Omit any additional fields that
you don't want to use.
REPLACEMENT_RESERVATION_NAME : the name of the
new replacement reservation.
REPLACEMENT_RESERVATION_ZONE : the zone of the
new replacement reservation.
REPLACEMENT_RESERVATION_NUMBER_OF_VMS : the
number of VMs that you want to reserve in the new replacement reservation.
REPLACEMENT_RESERVATION_MACHINE_TYPE : the
machine type that you want for the VMs
in your new replacement reservation.
For predefined machine types, use the format
MACHINE_FAMILY -standard-CPUS ;
for example, n2-standard-4.
For custom machine types, use the format
MACHINE_FAMILY -custom-CPUS -MEMORY ;
for example n2-custom-4-5120. For a full list of restrictions,
read the specifications
for custom machine types.
Replace the following:
MACHINE_FAMILY : the family of machine types;
for example, specify n2 for N2 VMs.
CPUS : the number of vCPUs .
MEMORY : the total memory for a reserved VM.
Memory must be a multiple of 256 MB and must be
supplied in MB; for example, to create an N2 VM with 4 vCPUs and
5 GB of memory,
which is 5120 MB, use n2-custom-4-5120.
REPLACEMENT_RESERVATION_NUMBER_OF_ACCELERATORS :
the number of GPUs you want to add, per VM, in the
replacement reservation.
REPLACEMENT_RESERVATION_ACCELERATOR_TYPE : the
type of accelerator you want to add in the
replacement reservation.
REPLACEMENT_RESERVATION_INTERFACE_1 and
REPLACEMENT_RESERVATION_INTERFACE_2 : the type
of interface you want the Local SSD disks
for each reserved VM to use. Valid options are: scsi and nvme.
Each Local SSD disk is 375 GB. Repeat the localSsds parameter for
each Local SSD disks that you want to add. You can specify up to 24
Local SSD disks.
REPLACEMENT_RESERVATION_SHARE_SETTING :
The type of sharing for the replacement reservation. Specify this
parameter with the value as projects if you want to share your
replacement reservation across multiple consumer projects.
REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1
and
REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2 :
the project IDs
of the projects that can share this reservation, for example
project-1,project-2. You can include up to 100 consumer projects.
These projects must be in the same organization as the owner project.
Don't include the PROJECT_ID ,
which is already allowed to consume this reservation by default.
Example for replacing a reservation that is attached to a commitment
To demonstrate this, this section shows an
example commitment with an attached reservation
and how to replace the example attached reservation .
Example commitment with an attached reservation
For example, suppose that you want to replace the attached reservation
res-1 for the my-commitment-with-reservations commitment, that was
purchased by making the following POST request:
POST https://compute.googleapis.com/compute/beta/projects/my-project/regions/asia-east1/commitments
{
"name": "my-commitment-with-reservations",
"plan": "TWELVE_MONTH",
"reservations":
[
{
"name": "res-1",
"specificReservation":
{
"count": "4",
"instanceProperties":
{
"guestAccelerators":
[
{
"acceleratorCount": "1",
"acceleratorType": "nvidia-tesla-p100"
}
],
"localSsds":
[
{
"diskSizeGb": "375",
"interface": "scsi"
},
{
"diskSizeGb": "375",
"interface": "scsi"
}
],
"machineType": "n1-standard-4"
}
},
"zone": "asia-east1-a"
}
],
"resources":
[
{
"amount": "16",
"type": "VCPU"
},
{
"amount": "61440",
"type": "MEMORY"
},
{
"acceleratorType": "nvidia-tesla-p100",
"amount": "4",
"type": "ACCELERATOR"
}
{
"amount": "3072000",
"type": "LOCAL_SSD"
}
],
"type": "GENERAL_PURPOSE"
}
This my-commitment-with-reservations commitment and the attached
reservation res-1 resulted in the following committed and reserved
resources:
Resource type
Resources in commitment (my-commitment-with-reservations)
Resources in current attached reservation (res-1)
vCPUs and memory
16 vCPUs and 60 GB
16 vCPUs and 60 GB (4 reserved n1-standard-4 VMs)*
GPUs
4 P100 GPUs
4 P100 GPUs
(1 P100 GPU per VM, for 4 VMs)*
Local SSD disks
3000 GB or 8 Local SSD disks
3000 GB or 8 Local SSD disks
(750 GB or 2 Local SSD disks per VM, for 4 VMs)*
* Specifically, the example
attached reservation, res-1, reserves 4 n1-standard-4
VMs, each with 1 P100 GPU and 2 Local SSD disks of scsi interface
type. The n1-standard-4
machine type
uses 4 vCPUs and 15 GB for each VM.
Replace the example attached reservation
Suppose you want to replace the attached reservation res-1 for the
with a new attached reservation res-2 and change the reserved resources
to the following:
Resource type
Resources in commitment (my-commitment-with-reservations)
Resources in current attached reservation (res-1)
Resources in replacement attached reservation (res-2)
vCPUs and memory
16 vCPUs and 60 GB
16 vCPUs and 60 GB (4 reserved n1-standard-4 VMs)*
16 vCPUs and 60 GB (2 reserved and shared n1-standard-8 VMs)†
GPUs
4 P100 GPUs
4 P100 GPUs (1 P100 GPU per VM, for 4 VMs)*
4 P100 GPUs (2 P100 GPUs per VM, for 2 VMs)†
Local SSD disks
3000 GB or 8 Local SSD disks
3000 GB or 8 Local SSD disks
(750 GB or 2 Local SSD disks per VM, for 4 VMs)*
3000 GB or 8 Local SSD disks
(1500 GB or 4 Local SSD disks per VM, for 2 VMs)*
* Specifically, the example
attached reservation, res-1, reserves 4 n1-standard-4
VMs, each with 1 P100 GPU and 2 Local SSD disks of scsi
interface type. The n1-standard-4
machine type
uses 4 vCPUs and 15 GB for each VM.
† Specifically, the replacement
attached reservation defines res-2, which reserves 2
n1-standard-8 VMs, each with 1 P100 GPU and 4 Local SSD disks
of scsi interface type. Additionally, res-2 is
shared with 2 other projects, project-1 and
project-2 and owned by the current project,
my-project. The n1-standard-8 machine type uses
8 vCPUs and 30 GB for each VM.
To replace the attached reservation res-1 with res-2
for the my-commitment-with-reservations commitment, make the following
POST request by using the regionCommitments.updateReservations
method:
POST https://compute.googleapis.com/compute/beta/projects/my-project/regions/asia-east1/commitments/my-commitment-with-reservations/updateReservations
{
"reservations":
[
{
"name": "res-2",
"specificReservation":
{
"count": "2",
"instanceProperties":
{
"guestAccelerators":
[
{
"acceleratorCount": 2,
"acceleratorType": "nvidia-tesla-p100"
}
],
"localSsds":
[
{
"diskSizeGb": "375",
"interface": "scsi"
},
{
"diskSizeGb": "375",
"interface": "scsi"
},
{
"diskSizeGb": "375",
"interface": "scsi"
},
{
"diskSizeGb": "375",
"interface": "scsi"
}
],
"machineType": "n1-standard-8"
}
},
"zone": "asia-east1-a"
},
{
"name": "res-1",
"specificReservation":
{
"count": "0",
"instanceProperties":
{
"guestAccelerators":
[
{
"acceleratorCount": 1,
"acceleratorType": "nvidia-tesla-p100"
}
],
"localSsds":
[
{
"diskSizeGb": "375",
"interface": "scsi"
},
{
"diskSizeGb": "375",
"interface": "scsi"
}
],
"machineType": "n1-standard-4"
}
},
"zone": "asia-east1-a"
}
]
}
What's next
Send feedback
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License , and code samples are licensed under the Apache 2.0 License . For details, see the Google Developers Site Policies . Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2026-06-09 UTC.
Need to tell us more?
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2026-06-09 UTC."],[],[]]