Resource-based committed use discounts


Compute Engine provides resource-based committed use discounts (CUDs) for your predictable workloads to help you cut costs on resources that you need. You can purchase and renew resource-based committed use contracts or commitments in return for heavily discounted prices for VM usage.

This document describes information about Compute Engine's resource-based commitments, how to purchase them and the resulting CUDs. To learn about Compute Engine flexible CUDs, see Flexible CUDs.

Resource-based commitments are ideal for predictable and steady state usage. Compute Engine lets you purchase the following categories of resource-based commitments:

Commitments for hardware resources are separate from commitments for licenses. You can purchase both categories of commitments for a VM instance, but you cannot purchase a single commitment that covers both hardware resources and licenses.

Committed use discount recommendations give you opportunities to optimize your compute costs by analyzing your VM spending trends with and without a committed use discount contract. By comparing these numbers, you can see how much you can save each month with a committed use contract. To learn more about how commitment recommendations work, you can also review Understand commitment recommendations.

Committed use discounts work on most Compute Engine machine types, including predefined and custom machine types. Committed use discounts are simple and flexible, and require no upfront costs. Discounts apply to the aggregate number of vCPUs, memory, GPUs, and Local SSD disks within a region, so they are not affected by changes to your instance's machine setup.

For machine types that support per VM Tier_1 networking performance, the 50, 75, and 100 Gbps higher bandwidth SKUs are excluded from discounts.

F1-micro and g1-small shared-core machines are not eligible for committed use discounts.

Before you begin

  • If you haven't already, set up authentication. Authentication is the process by which your identity is verified for access to Google Cloud services and APIs. To run code or samples from a local development environment, you can authenticate to Compute Engine as follows.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.

    REST

    To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

How committed use discounts work

When you purchase a committed use contract, you purchase Compute Engine resources—such as vCPUs, memory, GPUs, Local SSD disks, and sole-tenant nodes—at a discounted price in return for committing to paying for those resources for 1 year or 3 years. The discount is up to 57% for most resources like machine types or GPUs. The discount is up to 70% for memory-optimized machine types. For committed use prices for different machine types, see VM instances pricing.

During your commitment's term, you automatically start receiving CUDs on eligible resource usage in your project that matches the resource types, machine type, and region specified in your commitment. You continue to receive these CUDs for your eligible resource usage until your commitment expires.

Compute Engine maintains a lien on your project for each region in your project where you purchase a commitment. When you purchase a new commitment for any region in your project, Compute Engine associates the lien for that region with the newly created commitment.

You can't cancel a commitment after you purchase it. Your commitment expires at the end of its specified term duration of 1 or 3 years. However, you can enable auto-renewal on your commitment to ensure that it automatically renews for a new term.

Commitment status

Your commitment can have one of the following statuses:

  • CREATING: the commitment is being created.
  • NOT_YET_ACTIVE or PENDING: the commitment has been created but is not yet active. Compute Engine creates your commitments with this status.

    • If you're using the Google Cloud CLI or the REST API to purchase your commitment, then this status value shows as NOT_YET_ACTIVE.
    • If you're using the Google Cloud console to purchase your commitment, then this status value shows as PENDING.
  • ACTIVE: the commitment is active.

  • EXPIRED: the commitment has expired. Compute Engine reserves the right to remove expired commitments that are older than 210 days from the expiration date.

  • CANCELED: Compute Engine canceled the commitment. Compute Engine changes the status of your commitments to CANCELED when you combine them to create a new merged commitment.

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 20th 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. However, your commitment becomes ACTIVE only on January 21st at 12:00 AM US and Canadian Pacific Time (UTC-8 or UTC-7).

Efficient usage of your commitments

If you have just a few projects, you can purchase commitments just for the specific resources you plan to use. For example, if you purchase a commitment for 8 cores, and you run 24 cores during the month, you will receive committed use discounts for 8 cores. The other 16 cores will be billed at standard, non-committed use rates. Keep in mind that after you purchase a set amount of commitments, you're billed for those commitments monthly, even if you don't use them. For example, if you purchase commitments for 8 cores, you're billed the committed use rates for those 8 cores for the whole month, even if you might have only run these cores for a part of the month. It is to your advantage to purchase commitments only in increments you know you will use.

Commitments can't be stacked for burst scenarios. For example, if you purchased 10 cores for a month and then ran 20 cores for half the month, your commitments won't apply for the full 20 cores just because their usage was across only half the month.

Usage overage

Any hourly resource usage that is not covered by your commitments is charged based on the on-demand rates and is eligible for any applicable sustained use discounts (SUDs). For example, suppose you run an n2-standard-2 for a portion of the month and run an n2-standard-8 for another portion of the same month. Compute Engine combines the two and applies SUDs for the portion not covered by committed use discounts because both machine types belong to the n2-standard family.

Combine reservations with commitments

A commitment provides a 1- or 3-year discounted price agreement, but it does not reserve capacity in a specific zone. A reservation ensures that capacity is held in a specific zone even if the reserved VMs are not running. 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.

You can also attach reservations to your resource-based commitments to ensure that the reservations are specific to those commitments. When you commit to GPU or Local SSD resources, you must also reserve those resources and attach those reservations to your commitment.

For more information, see Combine reservations with committed use discounts.

Share committed use discounts across projects

By default, committed use discounts apply at the project level and you receive the applicable committed use discounts only for the project in which you purchase the commitment. If you move the project for which you purchased your commitment to a different Cloud Billing account, then you continue to receive the applicable committed use discounts for that project under the new Cloud Billing account.

However, Compute Engine lets you share discounts for hardware commitments across multiple projects that share the same Cloud Billing account. Sharing your committed use discounts for hardware commitments across all your projects reduces the overhead of managing discounts on a per-project basis, and maximizes your savings by pooling all your discounts across your projects' resource usage.

If you have multiple projects that share the same Cloud Billing account, you can enable committed use discount sharing so all of your projects within that Cloud Billing account share all of your committed use discount contracts.

For example, you purchase two commitments for 80 cores each (a total of 160 cores) and you run 200 cores during the month across different projects in your Cloud Billing account. If you've enabled committed use discount sharing for your Cloud Billing account, then you receive the applicable committed use discounts for 160 of those 200 cores that are used across the projects in that Cloud Billing account. The additional 40 cores are billed at on-demand, non-committed use rates. After you purchase your commitments, you're billed for your committed resources monthly, throughout the commitment time period, even if you don't use the resources. See Understand discount sharing for cost-saving utilization recommendations.

Committed use discounts are subject to Google Cloud commitment-based pricing and billing. By purchasing a committed use discount, you agree to these terms.

Use attribution to allocate discounts

Attribution refers to how your committed use discounts are allocated across your projects. These allocations are reflected in Cloud Billing cost management interfaces, such as the usage cost export or the Google Cloud console.

Attribution applies only when discount sharing is enabled. You can choose the type of attribution you want to use before you turn on discount sharing, and then activate the attribution configuration when you enable discount sharing.

Compute Engine commitments use proportional attribution by default. Proportional attribution commitments are applied to the projects according to the amount of the total eligible usage consumed by each project. For example, if project A consumed $75 worth of usage and project B consumed $25, project A would be covered by up to 75% of available credit and project B would be covered by up to 25%.

Alternatively, you can choose prioritized attribution for your Compute Engine commitments based on the usage you specify. Any remaining unprioritized commitments are applied proportionally to the eligible usage in your remaining projects. The total amount of the allotments cannot exceed the commitment amount purchased.

To choose proportional or prioritized attribution for your Compute Engine commitments, see choose attribution for resource-based commitments.

Specifications

  • You can only purchase resource-based commitments for resources in a specific region if you have quota available in that region for both of the following:

    • Commitments
    • Committed resources (with the exception of memory)

    For more information, see Quotas for commitments and committed resources.

  • Commitments must be purchased on a per-region basis.

  • To use the gcloud CLI to manage commitments, you must be running gcloud version 147.0.0 or later. To update the gcloud CLI to the latest version:

    gcloud components update
    

    To check the version of the gcloud CLI you are running:

    gcloud version
    

Restrictions

  • Projects that are in the free tier period with free tier credit and projects that do not have any payment history do not qualify for committed use discounts.
  • You can purchase commitments only on a per-region basis.
  • You can't change the project for which you purchase a commitment. If you want to share the discount with multiple projects, enable discount sharing.

  • For commitments shared across projects under one Cloud Billing account: If any part of the commitment is unutilized, the remaining commitment charge remains in the project that purchased that portion of the commitment.

  • Committed use discounts do not apply to preemptible VM instances, N1 shared-core machine types, or extended memory.

  • For committed use discounted pricing for GPUs and Local SSD disks, you must reserve your resources and attach those reservations to your commitment.

  • Committed use discount prices are independent of on-demand pricing. Any fluctuation in on-demand pricing would not necessarily be reflected in committed use discounts.

  • If a reservation is attached to a committed use discount, the reservation can't be deleted for the duration of the commitment.

  • You can only buy a 1-year commitment on K80 GPUs.

Pricing

You're billed monthly for your commitment and must pay your monthly commitment fee even if you don't use all of your committed resources. Your commitment fee is the sum of the discounted prices of all your committed resources. Compute Engine calculates the discounted price of each resource by using its prevailing on-demand price on the day your commitment becomes active. Your monthly commitment fee and the discounted prices for your resources stay the same until the end of your commitment term, even if the on-demand prices change.

The discounted pricing (also referred to as CUD pricing) for VM instances, with or without GPUs and Local SSD disks, differs depending on the region. For current rates, see VM instance pricing.

If you move the project for which you purchased commitments to a different Cloud Billing account, then you continue to receive committed use discounts for that project under the new Cloud Billing account. Learn about changing the Cloud Billing account for a project.

Commitment types

You can purchase commitments for the following resources.

Commitment types Resources for which you can purchase discounts Applicable to the following resource types
General purpose E2 commitments
  • vCPUs
  • Memory
All E2 machine types
General purpose N2 commitments
  • vCPUs
  • Memory
  • Local SSD
  • All N2 machine types
  • All N2 sole-tenant node types
General purpose N2D commitments
  • vCPUs
  • Memory
  • Local SSD
  • All N2D machine types
  • All N2D sole-tenant node types
General purpose C3 commitments
  • vCPUs
  • Memory
  • Local SSD
  • All C3 machine types
  • All C3 sole-tenant node types
General purpose C3D commitments
  • vCPUs
  • Memory
  • Local SSD
  • All C3D machine types
  • All C3D sole-tenant node types
General purpose Tau T2D commitments
  • vCPUs
  • Memory
Standard Tau T2D machine types
General purpose N1 commitments
  • vCPUs
  • Memory
  • GPUs
  • Local SSD
  • All N1 machine types, excluding shared-core.
  • All N1 sole-tenant node types
  • GPUs:
    • NVIDIA T4
    • NVIDIA V100
    • NVIDIA P100
    • NVIDIA P4
    • NVIDIA K80
Compute-optimized H3 commitments
  • vCPUs
  • Memory
  • All H3 machine types
Compute-optimized C2 commitments
  • vCPUs
  • Memory
  • Local SSD
  • All C2 machine types
  • All C2 sole-tenant node types
Compute-optimized C2D commitments
  • vCPUs
  • Memory
  • Local SSD
All C2D machine types
Memory-optimized M1/M2 commitments
  • vCPUs
  • Memory
  • Local SSD
  • All M1 and M2 machine types
  • All M1 and M2 sole-tenant node types
Memory-optimized M3 commitments
  • vCPUs
  • Memory
  • Local SSD
All M3 machine types
Accelerator-optimized A2 commitments
  • vCPUs
  • Memory
  • GPUs
  • Local SSD
  • All A2 machine types
  • GPUs:
    • NVIDIA A100
Accelerator-optimized A3 commitments
  • vCPUs
  • Memory
  • GPUs
  • Local SSD
  • All A3 machine types
  • GPUs:
    • NVIDIA H100
Accelerator-optimized G2 commitments
  • vCPUs
  • Memory
  • GPUs
  • Local SSD
  • All G2 machine types
  • All G2 sole-tenant node types
  • GPUs:
    • NVIDIA L4

You can't purchase commitments for f1-micro, or g1-small machine types or for the sole-tenant premium charge.

Commitments for machine types

Purchase the appropriate commitment type for the machine types you are using.

General-purpose commitments

Discounts for general-purpose commitments are applied to resources in the following order:

  1. E2, N2, N2D, or N1 custom machine types, depending on which commitment you purchase
  2. Sole-tenant nodes
  3. E2, N2, N2D, C3, C3D, Tau T2D, or N1 predefined machine types, depending on which commitment you purchase

When you purchase general-purpose commitments, you pick which machine series the commitment applies to. For example, if you purchase general-purpose E2 commitments, they apply to only E2 machine types. Similarly, if you purchase general-purpose N2, N2D, C3, C3D, Tau T2D, or N1 commitments, the commitments never overlap.

For example, assume you have a region with the following mix:

  • 10 N2 custom machine type vCPUs
  • 30 GB of custom machine type memory
  • 2 n2-standard-4 predefined machine types

You purchase N2 commitments for 15 vCPUs and 13.5 GB of memory for committed use. The committed use discounts would be applied first to the N2 custom machine types, and any remaining discounts would be applied to the N2 predefined machine types. In this case, all 10 vCPUs of the N2 custom machine types would be charged at committed use prices, and 13.5 GB of custom machine type memory would be charged at committed use prices.

Finally, the remaining 5 vCPUs of committed use would apply to 5 random vCPUs across the two n2-standard-4 machine types. Any resources that aren't covered by committed use discounts would qualify for sustained use discounts.

To purchase a commitment for general-purpose machine types, see Purchase commitments without attached reservations.

Memory-optimized commitments

Memory-optimized committed use discounts are available at two levels. One level applies to both M1 and M2 machine types. The other level applies to only M3 machine types. You cannot use the same committed use discount for all memory-optimized machine types.

Quota for these committed use discounts is separate. If you want to use a committed use discount for an M1 machine type, you must have quota for an M1 machine. The same is true for M2 and M3–you must have quota for the committed use discount.

If you intend to use memory-optimized machine types, purchase memory-optimized commitments. To purchase a commitment for memory-optimized machine types, see Purchase commitments without attached reservations.

Compute-optimized commitments

If you intend to use compute-optimized machine types, purchase compute-optimized commitments. To purchase a commitment:

Accelerator-optimized commitments

If you intend to use accelerator-optimized machine types, purchase a commitment for A3, A2, or G2 machine types. To purchase a commitment for A3, A2, or G2 machine types, see Purchase commitments with attached reservations.

Commitments for GPUs and Local SSD resources

To purchase commitments for GPUs, Local SSD disks, or both you must also reserve the resources and attach the reservations to your commitment. Reserving these resources is required to ensure that the resources are always available for you (whether you use them or not). There are no additional charges for reserving the resources.

You must purchase commitments by specific GPU types. For example, you can purchase GPUs for either NVIDIA P100s or NVIDIA V100s, but you can't purchase commitments for NVIDIA P100 GPUs and apply them to other GPU types.

To purchase a commitment for GPUs, Local SSD disks, or both, see Purchase commitments with attached reservations in this document.

To learn more about commitments with attached reservations, see Attach reservations to resource-based commitments.

Quotas for commitments and committed resources

You can only purchase resource-based commitments for resources in a specific region if you have quota available in that region for both of the following:

  • Commitments
  • Committed resources (with the exception of memory)

Specifically, if you want to purchase commitments for any vCPUs, GPUs, or Local SSD disks, then you need to have quota available both for commitments and for those specific committed SKUs in the region where you want to purchase the commitment. There is no quota on memory, so you don't need to have separate quota for committed memory to purchase a commitments for memory.

For example, to purchase 5 commitments that cover 32 vCPUs of general-purpose N1 machine type, 16 GB memory, 4 NVIDIA P4 GPUs, and 2 Local SSD disks in us-central1 region, you must have quota for each of the following:

  • Five commitments in us-central1
  • 32 committed N1 vCPUs in us-central1
  • Four committed NVIDIA P4 GPUs in us-central1
  • 750 GB (or 2 Local SSD disks) of committed Local SSD disk space in us-central1

Quota limits

By default, Compute Engine offers a specific amount of commitment quota for each type of committed resource. These quota limits determine the number of commitments you can purchase and the amount of resources you can commit to. To learn how to view the current quota limits and quota usage values for your commitments and committed resources, see View quotas in the Google Cloud console.

If you consistently pay for a very high amount of committed vCPUs for your projects across different regions, then you might be eligible for unlimited quota on your committed vCPUs for all machine types (except for memory-optimized machine types) in all regions.

If you use up all your commitment quota, you won't be able to purchase new commitments. Likewise, if you exhaust your committed resource quota, then you won't be able to purchase a new commitment for that resource even if you have commitment quota available. For example, if you used up all of your commitment quota, then the server returns the following error when you make a commitment purchase request:

"Quota 'COMMITMENTS' exceeded. Limit: 0.0"

Increase quota limits

If you don't have enough quota for your commitments or your committed resources, you can always request for a quota increase from the Quotas page. You can request for quota increases at any time. To learn how to submit a request to increase quota limits for your resources, see Request a higher quota limit.

For example, consider a scenario where you purchased two commitments for a total of four NVIDIA V100 GPUs in us-central1 and met your quota limits. region. Suppose you want to purchase two new commitments for two NVIDIA V100 GPUs each, in the same region, you must do the following:

  1. Submit a new quota request to increase your Committed NVIDIA V100 GPUs quota in us-central1 to the new maximum number (eight) that you want.
  2. Submit a new quota request to increase your Commitments quota in us-central1 to match the new maximum number (four) that you want.

    Wait for your requests to be approved and closed. After your requests are approved, your commitment and committed GPU quotas in us-central1 increase to match your new needs. You can then purchase your new commitments.

If you place a request for an increase in quota limit for a resource that already has unlimited quota by default, then the quota value for that resource remains unlimited and you are notified that your requested limit is below the approved limit.

Set a cap for quota limits

You can set a cap on the quota value for your committed resources by creating a consumer quota override. For resources that have unlimited quota by default, creating a consumer quota override decreases the quota value. To return the default quota to its unlimited value, you must remove the consumer override that was set for your committed SKUs. For more information, see Creating a consumer quota override and Deleting a consumer quota override.

To learn more about how to manage quotas for your resources, see View and manage quotas.

Purchase commitments without attached reservations

You can purchase commitments for vCPUs, memory, or both without attaching any reservations for those resources. You can purchase these commitments using the Google Cloud console, the gcloud CLI, or the API.

To learn more about commitments with attached reservations, see Attach reservations to resource-based commitments

To purchase commitments for GPUs, Local SSDs disks, or both, see Purchase commitments with attached reservations.

By default, project owners have permission to purchase committed use discount contracts. However, it's possible for owners to create custom roles that include or exclude certain users. Read about access control to ensure you have permission to purchase a committed use discount contract.

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). Compute Engine maintains a lien on your project for each region in your project where you purchase a commitment. When you purchase a new commitment for any region in your project, Compute Engine associates the lien for that region with the newly created commitment.

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 20th 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. However, your commitment becomes ACTIVE only on January 21st at 12:00 AM US and Canadian Pacific Time (UTC-8 or UTC-7).

The discounts are automatically applied to applicable instances in the region you specified, and to the projects in which those discounts are purchased.

Console

Before you purchase a commitment using the Google Cloud console, select the project that you want to use to purchase the commitment. If discount 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, perform the following steps:

  1. In the Google Cloud console, go to the Committed use discounts page.

    Go to Committed use discounts

  2. To purchase a new commitment, click Purchase commitment.

  3. Name your commitment.

  4. Choose the region where you want it to apply.

  5. Choose the Commitment type:

    • General-Purpose E2 for E2 machine type resources
    • General-Purpose N2 for N2 machine type resources
    • General-Purpose N2D for N2D machine type resources
    • General-Purpose C3 for C3 machine type resources
    • General-Purpose C3D for C3D machine type resources
    • General-Purpose T2D for Tau T2D machine type resources
    • General-Purpose N1 for N1 machine type resources
    • Compute-optimized C2 for C2 machine type resources
    • Compute-optimized C2D for C2D machine type resources
    • Memory-optimized M1/M2 for M1 and M2 machine type resources
    • Memory-optimized M3 for M3 machine type resources
    • Accelerator-optimized A2 for A2 machine type resources
    • Accelerator-optimized A3 for A3 machine type resources
    • Graphics-optimized G2 for G2 machine type resources
  6. Choose a commitment Duration of 1 or 3 years.

  7. Enter the quantity of Cores or Memory that you want to purchase. There is no lower limit, the number can be zero. The quantity for cores must be entered as a whole number equal to or greater than zero. Memory can be purchased in increments of 0.25 GB.

  8. Read the terms of purchase.

  9. Click the Purchase button to purchase the commitment.

gcloud

Using the gcloud CLI, run the gcloud compute commitments create command:

gcloud compute commitments create COMMITMENT_NAME \
    --region REGION \
    --project PROJECT_ID \
    --resources vcpu=NUMBER_VCPUS,memory=MEMORY \
    --plan DURATION \
    --type COMMITMENT_TYPE

Replace the following:

  • COMMITMENT_NAME: the name you want to identify this commitment with.
  • REGION: the region this commitment applies to. Each region has different commitment prices. For current prices, see the price sheet.
  • PROJECT_ID: the project ID of the project for which you want to create the commitment.
  • NUMBER_VCPUS: the number of vCPUs you are willing to purchase commitments for. The number of vCPUs must be an integer of 0 or more and can be even or odd.
  • MEMORY: the amount, in MB or GB, of memory you are willing to purchase commitments for. For example, 1000MB. If the units are not specified, the default unit used is GB. Memory can be purchased in increments of 0.25 GB.
  • DURATION: the term of the commitment, either 12-month or 36-month.
  • COMMITMENT_TYPE: one of:

    • accelerator-optimized for A2 machine type resources
    • accelerator-optimized-a3 for A3 machine type resources
    • compute-optimized for C2 machine type resources
    • compute-optimized-c2d for C2D machine type resources
    • compute-optimized-c3 for C3 machine type resources
    • compute-optimized-c3d for C3D machine type resources
    • general-purpose for N1 machine type resources
    • general-purpose-e2 for E2 machine type resources
    • general-purpose-n2 for N2 machine type resources
    • general-purpose-n2d for N2D machine type resources
    • general-purpose-t2d for Tau T2D machine type resources
    • graphics-optimized for G2 machine type resources
    • memory-optimized for M1 or M2 machine type resources
    • memory-optimized-m3 for M3 machine type resources

      If you do not specify the --type flag, the default value used is general-purpose.

Examples

  • To create a general-purpose commitment for N1 machine types, you might use the following example:

    gcloud compute commitments create example-commitment --region us-central1 \
      --resources vcpu=5,memory=33280MB --plan 12-month \
      --project=myproject
    
  • To create a compute-optimized commitment, use the gcloud compute commitments create command, which purchases a 1 year commitment for a compute-optimized machine type:

    gcloud compute commitments create example-compute-optimized-commitment \
      --region us-central1 --resources vcpu=2,memory=3814GB --plan 12-month \
      --type compute-optimized --project=myproject
    
  • To create a memory-optimized commitment:

    gcloud compute commitments create example-memory-optimized-commitment \
      --region us-central1 --resources vcpu=96,memory=1434MB \
      --plan 12-month --type memory-optimized \
      --project=myproject
    
  • To create an accelerator-optimized commitment, you must purchase your commitment with a supporting attached reservation by using the gcloud compute commitments create command. You must also specify the total number of resources (including GPUs) that you need.

    When creating GPU commitments, you need to specify the --accelerator and --resources-accelerator flags. The --accelerator flag specifies the number of GPUs that are attached to each VM. The --resources-accelerator flag specifies the total number of GPUs in the commitment.

    For example, the following commitment includes 96 vCPUs, 680 GB memory, 8 GPUs, and a reservation for those GPUs to be used in 2 VMs in us-central1-a.

    gcloud compute commitments create example-accelerator-optimized-commitment \
      --region=us-central1 \
      --project=myproject \
      --resources=vcpu=96,memory=680GB \
      --resources-accelerator=count=8,type=nvidia-tesla-a100 \
      --plan 12-month \
      --type accelerator-optimized \
    
      --reservation=reservation-01 \
      --reservation-zone=us-central1-a \
      --machine-type=a2-highgpu-4g \
      --accelerator=count=4,type=nvidia-tesla-a100 \
      --vm-count=2
    
    
  • To create a commitment for GPUs, Local SSD disks, or both, you must purchase your commitment with an attached reservation by using the gcloud compute commitments create command.

    When creating GPU commitments, you need to specify the --accelerator and --resources-accelerator flags. The --accelerator flag specifies the number of GPUs that are attached to each VM. The --resources-accelerator flag specifies the total number of GPUs in the commitment.

    For example, the following commitment includes 4 GPUs and a reservation for those GPUs to be used in 2 instances in us-central1-a.

    gcloud compute commitments create example-reservation-commitment \
      --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
      
    

REST

In the API, make a POST request to the regionCommitments.insert method, with a request body that contains information about the commitment:

https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments?requestId=OPTIONAL_UNIQUE_ID

The resource body should contain the following:

  • name for the name of the commitment
  • plan for the term of the commitment, either TWELVE_MONTH or THIRTY_SIX_MONTH
  • resources to specify the amount of memory and vCPU. Memory must be be specified in MB. You must specify both VCPU and MEMORY in the resources section.
  • type of commitment, one of the following:

    • ACCELERATOR_OPTIMIZED for A2 machine type resources
    • ACCELERATOR_OPTIMIZED_A3 for A3 machine type resources
    • COMPUTE_OPTIMIZED for C2 machine type resources
    • COMPUTE_OPTIMIZED_C2D for C2D machine type resources
    • COMPUTE_OPTIMIZED_C3 for C3 machine type resources
    • COMPUTE_OPTIMIZED_C3D for C3D machine type resources
    • GENERAL_PURPOSE for N1 machine type resources
    • GENERAL_PURPOSE_E2 for E2 machine type resources
    • GENERAL_PURPOSE_N2 for N2 machine type resources
    • GENERAL_PURPOSE_N2D for N2D machine type resources
    • GENERAL_PURPOSE_T2D for Tau T2D machine type resources
    • GRAPHICS_OPTIMIZED for G2 machine type resources
    • MEMORY_OPTIMIZED for M1 or M2 machine type resources
    • MEMORY_OPTIMIZED_M3 for M3 machine type resources

For example, the following creates a commitment for 1 year with 5 vCPUs and 18.75 GB of memory:

{
  "name": "example-commitment",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE",
  "resources": [
    {
    "amount": "5",
    "type": "VCPU"
    },
    {
    "amount": "19200",
    "type": "MEMORY"
    }
  ]
}

To create a memory-optimized commitment, include the type property. The following example shows a purchase of a 1 year commitment for an m1-megamem-96 machine type:

{
  "name": "example-memory-optimized-commitment",
  "plan": "TWELVE_MONTH",
  "type": "MEMORY_OPTIMIZED",
  "resources": [
    {
    "amount": "96",
    "type": "VCPU"
    },
    {
    "amount": "1434",
    "type": "MEMORY"
    }
  ]
}

To create a compute-optimized commitment, include the type property. The following example, purchases a 1 year commitment for a c2-standard-16 machine type:

{
  "name": "example-compute-optimized-commitment",
  "plan": "TWELVE_MONTH",
  "type": "COMPUTE_OPTIMIZED",
  "resources": [
    {
    "amount": "16",
    "type": "VCPU"
    },
    {
    "amount": "1434",
    "type": "MEMORY"
    }
  ]
}

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 20th 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. However, your commitment becomes ACTIVE only on January 21st 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. For example, if you want to purchase a commitment for 4 V100 GPUs, then your commitment's attached reservations must specify a total of 4 V100 GPUs. However, the amount of vCPU and memory that you reserve can be more or less than what you commit to.
  • 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.

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:

  1. In the Google Cloud console, go to the Committed use discounts page.

    Go to Committed use discounts

  2. To purchase a commitment, click Purchase commitment. The Purchase a committed use discount page opens and displays the Hardware tab.

  3. In the Name field, enter a name for your commitment.

  4. In the Region field, select the region where you want to commit to Compute Engine resources.

  5. In the Commitment type field, select the machine family series for your committed resources.

  6. In the Duration field, select your commitment's term duration.

  7. In the Cores field, enter the number of vCPUs that you want to commit to.

  8. In the Memory field, enter the amount, in GB, of memory that you want to commit to.

  9. To commit to GPUs, in the GPUs section, click Add GPU and then do the following:

    1. In the GPU type field, select the type of GPU.
    2. In the Number of GPUs field, enter the number of GPUs.
    3. Optional: If your GPU model supports NVIDIA RTX Virtual Workstations (vWS) for graphics workloads, and you plan to run graphics-intensive workloads, select the Enable Virtual Workstation (NVIDIA GRID) checkbox.
  10. To commit to Local SSD disks, in the Local SSDs section, click Add SSD and then, in the Number of SSDs field, specify the number of disks.

  11. To attach one or more existing reservations to the commitment, in the Reservations field, select Attach existing reservations.

    The Google Cloud console displays a list of all the reservations in your project whose region, machine type, and GPU type match with the commitment. Then, do the following:

    1. Optional. To view reservations with specific properties, in the Filter menu, add or remove filters for the properties that you want.
    2. Select all the reservations that you want to attach to the commitment.
  12. To finish purchasing your commitment with the attached reservations, do the following:

    1. Click Purchase.
    2. In the Purchase a committed use discount dialog, if you agree with the service specific terms, click Purchase again.

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=DURATION \
    --type=COMMITMENT_TYPE \
    --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.
  • DURATION: the term duration of the commitment, either 12-month or 36-month.
  • COMMITMENT_TYPE: the commitment type. The following commitment types provide options for GPUs, Local SSD disks, or both:

    • accelerator-optimized for machine type resources
    • compute-optimized for C2 machine type resources
    • compute-optimized-c2d for C2D machine type resources
    • compute-optimized-c3 for C3 machine type resources
    • compute-optimized-c3d for C3D machine type resources
    • general-purpose for N1 machine type resources
    • general-purpose-e2 for E2 machine type resources
    • general-purpose-n2 for N2 machine type resources
    • general-purpose-n2d for N2D machine resources
    • general-purpose-t2d for Tau T2D machine type resources
    • graphics-optimized for G2 machine type resources
    • memory-optimized for M1 or M2 machine type resources
    • memory-optimized-m3 for memory-optimized M3 machine type
  • 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. You can purchase memory in increments of 0.25 GB.

  • 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 \
    --resources-accelerator=type=nvidia-tesla-v100,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": "DURATION",
  "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"
    }
  ],
  "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.
  • DURATION: the term duration of the commitment, either TWELVE_MONTH or THIRTY_SIX_MONTH.
  • COMMITMENT_TYPE: the commitment type. The following commitment types provide options for GPUs, Local SSD disks, or both:

    • GENERAL_PURPOSE_E2 for E2 machine type resources
    • GENERAL_PURPOSE_N2 for N2 machine type resources
    • GENERAL_PURPOSE_N2D for N2D machine resources
    • COMPUTE_OPTIMIZED_C3 for C3 machine type resources
    • GENERAL_PURPOSE_C3D for C3D machine type resources
    • GENERAL_PURPOSE_T2D for Tau T2D machine type resources
    • GENERAL_PURPOSE for N1 machine type resources
    • COMPUTE_OPTIMIZED for C2 machine type resources
    • COMPUTE_OPTIMIZED_C2D for C2D machine type resources
    • MEMORY_OPTIMIZED for M1 or M2 machine type resources
    • MEMORY_OPTIMIZED_M3 for memory-optimized M3 machine type
    • ACCELERATOR_OPTIMIZED for machine type resources
    • GRAPHICS_OPTIMIZED for G2 machine type resources
  • 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. You can purchase memory in increments of 256 MB.

  • 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.

  • 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-v100",
      "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.

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:

  1. In the Google Cloud console, go to the Committed use discounts page.

    Go to Committed use discounts

  2. To purchase a commitment, click Purchase commitment. The Purchase a committed use discount page opens and displays the Hardware tab.

  3. In the Name field, enter a name for your commitment.

  4. In the Region field, select the region where you want to commit to Compute Engine resources.

  5. In the Commitment type field, select the machine family series for your committed resources.

  6. In the Duration field, select your commitment's term duration.

  7. In the Cores field, enter the number of vCPUs that you want to commit to.

  8. In the Memory field, enter the amount, in GB, of memory that you want to commit to.

  9. To commit to GPUs, in the GPUs section, click Add GPU and then do the following:

    1. In the GPU type field, select the type of GPU.
    2. In the Number of GPUs field, enter the number of GPUs.
    3. Optional: If your GPU model supports NVIDIA RTX Virtual Workstations (vWS) for graphics workloads, and you plan to run graphics-intensive workloads, select the Enable Virtual Workstation (NVIDIA GRID) checkbox.
  10. To commit to Local SSD disks, in the Local SSDs section, click Add SSD and then, in the Number of SSDs field, specify the number of disks.

  11. To create a new reservation and attach it to the commitment, in the Reservations field, select Create reservations and then do the following. Repeat this step for every new reservation that you want to create and attach.

    1. Click Add a reservation. The New reservation section appears.
    2. In the Name field, enter a name for your attached reservation.
    3. In the Region field, select the same region as your commitment.
    4. In the Zone field, select the zone where you want to reserve your resources.
    5. In the Share type section, specify how you want to share this reservation in one of the following ways:

      • To create a single-project reservation, select Local.
      • To create a reservation that is shared with multiple projects, select Shared. Then, to specify the projects to share the this reservation with, click Add projects, and then select the projects that you want from the current project's organization.
    6. In the Use with VM instance field, select how you want VMs to consume your reservation in one of the following ways:

      • To allow VMs with matching properties to automatically consume this reservation, click Use reservation automatically (default).
      • To consume this reservation's resources only when creating VMs with matching properties that specifically target this reservation by name, click select Select specific reservation.
    7. In the Resource details section, do the following:

      1. In the Number of VM instances field, enter the number of VM instances that you want to reserve.
      2. In the Machine configuration section, specify the properties of your reserved VMs in one of the following ways:

        1. To specify your the properties of your VMs using an existing instance template, select Use instance template.

          In the Instance template field, select an instance template that specifies the same machine family series as your commitment. If you select a regional instance template, the region of that instance template must also match with the region specified in your commitment.

        2. To manually specify the properties of your VMs, select Select machine type and then do the following:

          1. Select the machine family that applies to the machine series that you specified for the commitment:

            • General purpose for general-purpose machine series
            • Compute optimized for compute-optimized machine series
            • Memory optimized for memory-optimized machine series
            • GPUs for accelerator-optimized machine series
          2. In the table that has Series column, select the same machine series that you specified for the commitment.

          3. In the Machine type field, specify a predefined or custom machine type in one of the following ways:

            1. To choose a predefined machine type, select Preset and then select the machine type that you want.
            2. To choose a custom machine type, select Custom and then specify Cores and Memory that you want.
          4. To specify a minimum CPU platform, GPUs, or both, expand the CPU Platform and GPU menu and do the following:

            1. Optional: To specify a minimum CPU platform, in the CPU Plaform list, select an option.
            2. Optional: To reserve GPUs, click Add GPU. Then, in the GPU type and Number of GPUs fields, select the type and number of GPUs for each VM.

          5. To reserve local SSD disks, do the following:

            1. In the Number of disks field, select the number of local SSD disks that you want for each VM.
            2. In the Interface type field, select the interface for the local SSD disks.
    8. To finish specifying the properties for this reservation, click Done.

  12. To finish purchasing your commitment with the attached reservations, do the following:

    1. Click Purchase.
    2. In the Purchase a committed use discount dialog, if you agree with the service specific terms, click Purchase again.

gcloud

To create your attached reservations while purchasing your commitment, run the gcloud compute commitments create command.

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 DURATION \
        --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 \
        --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:

    1. 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.

    2. 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 DURATION \
          --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.
  • DURATION: the term duration of the commitment, either 12-month or 36-month.
  • COMMITMENT_TYPE: the commitment type. The following commitment types provide options for GPUs, Local SSD disks, or both:

    • general-purpose-e2 for E2 machine type resources
    • general-purpose-n2 for N2 machine type resources
    • general-purpose-n2d for N2D machine resources
    • compute-optimized-c3 for C3 machine type resources
    • general-purpose-c3d for C3D machine type resources
    • general-purpose-t2d for Tau T2D machine type resources
    • general-purpose for N1 machine type resources
    • compute-optimized for C2 machine type resources
    • compute-optimized-c2d for C2D machine type resources
    • memory-optimized for M1 or M2 machine type resources
    • memory-optimized-m3 for memory-optimized M3 machine type
    • accelerator-optimized for machine type resources
    • graphics-optimized for G2 machine type resources
  • 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. You can purchase memory in increments of 0.25 GB.

  • 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.

    • 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.
  • 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 V 100 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": "DURATION",
    "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"
      }
    ],
    "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": "DURATION",
    "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"
      }
    ],
    "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.
  • DURATION: the term duration of the commitment, either TWELVE_MONTH or THIRTY_SIX_MONTH.
  • COMMITMENT_TYPE: the commitment type. The following commitment types provide options for GPUs, Local SSD disks, or both:

    • ACCELERATOR_OPTIMIZED for machine type resources
    • COMPUTE_OPTIMIZED for C2 machine type resources
    • COMPUTE_OPTIMIZED_C2D for C2D machine type resources
    • COMPUTE_OPTIMIZED_C3 for C3 machine type resources
    • COMPUTE_OPTIMIZED_C3D for C3D machine type resources
    • GENERAL_PURPOSE for N1 machine type resources
    • GENERAL_PURPOSE_E2 for E2 machine type resources
    • GENERAL_PURPOSE_N2 for N2 machine type resources
    • GENERAL_PURPOSE_N2D for N2D machine resources
    • GENERAL_PURPOSE_T2D for Tau T2D machine type resources
    • GRAPHICS_OPTIMIZED for G2 machine type resources
    • MEMORY_OPTIMIZED for M1 or M2 machine type resources
    • MEMORY_OPTIMIZED_M3 for memory-optimized M3 machine type
  • 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. You can purchase memory in increments of 256 MB.

  • 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.

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.

    • 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.
  • 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 V 100 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"
    }
  ]
}

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. Deletion of these reservations has no effect on any running VM instances that were tied to those reservations. The running VMs continue to run and you are still charged for those VMs.

For the duration of your commitment's term, you cannot delete or resize any attached reservations that contain GPUs, local SSDs, 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 Replace reservations that are attached to commitments.

Purchase commitments for licenses

You can purchase commitments for your licenses if you run your workloads on VMs that use the following operating system (OS) images:

  • SUSE Linux Enterprise Server (SLES) images
  • SLES for SAP images
  • Red Hat Enterprise Linux (RHEL) images
  • RHEL for SAP images

The CUD percentages that you receive for license commitments of each OS image depends on the number of vCPUs that your VM uses. The following tables show the CUD percentages for each type of software license commitment:

License commitment type Number of vCPUs 1-year CUD percentage 3-year CUD percentage
SLES images 1-2 77% 79%
SLES images 3-4 54% 59%
SLES images 5+ 45% 50%
SLES for SAP images 1-2 59% 63%
SLES for SAP images 3-4 59% 63%
SLES for SAP images 5+ 59% 63%
RHEL images 1-4 20% 24%
RHEL images 5+ 20% 24%
RHEL for SAP images 1-4 20% 24%
RHEL for SAP images 5+ 20% 24%

When you purchase a commitment for licenses, the commitment forms a "pool" of licenses that automatically apply to any running VM instances within a selected project in a specified region. The licenses in the commitment are not tied to any one particular VM. When a VM starts, it takes a committed license from the pool, and when the VM stops it returns the license to the pool, where the license can be used by another VM. As long as there are available committed licenses in the pool, you continue to receive discounts for the premium OS usage.

For example, if you need to run 10 VMs in two regions (5 VMs in us-central1 and 5 VMs in us-west1) and under the same project ID, you must purchase 5 licenses in each region to cover those running VMs. For each commitment, your committed licenses can apply to any 5 concurrently running VMs at any time during the year in the respective region. You are billed monthly for the commitments regardless of your usage.

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). Compute Engine maintains a lien on your project for each region in your project where you purchase a commitment. When you purchase a new commitment for any region in your project, Compute Engine associates the lien for that region with the newly created commitment.

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 20th 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. However, your commitment becomes ACTIVE only on January 21st at 12:00 AM US and Canadian Pacific Time (UTC-8 or UTC-7).

You can't cancel a license commitment after you purchase it. When your license commitments expire, your running VMs continue to run and you are charged for the licenses at on-demand image prices.

Purchase a license commitment using the Google Cloud console, the Google Cloud CLI, or REST.

Console

Before you purchase a commitment using the Google Cloud console, select the project that you want to use to purchase the commitment. If discount sharing is enabled for a billing account, you can purchase the commitment using any project from that billing account. After you select the project, perform the following steps:

  1. In the Google Cloud console, go to the Committed Use Discounts page.

    Go to the Committed Use Discounts page

  2. Click Purchase commitment to purchase a new commitment.
  3. Click New license committed use discount to purchase a new license commitment.
  4. Name your commitment and choose the region where you want it to apply.
  5. Choose a duration amount of the commitment, either 1 or 3 years.
  6. Choose a License family.
  7. Choose the License type and quantity.
  8. Choose the Number of licenses.
  9. Click Purchase.

gcloud

Using the gcloud CLI, run the gcloud compute commitments create-license command to purchase a license commitment.

gcloud compute commitments create-license COMMITMENT_NAME \
    --license `LICENSE_URI`
    --amount NUMBER_OF_LICENSES \
    --cores-per-license CORES_PER_LICENSE \
    --plan PLAN \
    --region REGION \

Replace the following:

  • COMMITMENT_NAME: the name for your commitment.
  • LICENSE_URI: the license URI. For example: https://www.googleapis.com/compute/v1/projects/myproject/global/licenses/sles-sap-12
  • NUMBER_OF_LICENSES: the number of licenses you plan to purchase.
  • CORES_PER_LICENSE: the number of cores per license. Enter 1-2 3-4, or 5+.
  • PLAN: enter the plan length: 12-month or 36-month.
  • REGION: the region where this commitment applies.

For example, the following commitment is for 4 SAP licenses with 3-4 cores per license for 36 months in the us-central1 region:

gcloud compute commitments create-license commitment-1
    --license https://www.googleapis.com/compute/v1/projects/myproject/global/licenses/sles-12
    --amount=4
    --cores-per-license=3-4
    --plan=36-month
    --region=us-central1

For example, the following commitment is for 2 SLES for SAP licenses with 1-2 cores per license for 12 months in the us-central1 region:

gcloud compute commitments create-license commitment-2
    --license https://www.googleapis.com/compute/v1/projects/myproject/global/licenses/sles-sap-12
    --amount=2
    --cores-per-license=1-2
    --plan=12-month
    --region=us-central1

REST

Use the regionCommitments.insert method and include the licenseResource field to define the license commitment's properties.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments?requestId=OPTIONAL_UNIQUE_ID

{
    "name": COMMITMENT_NAME,
    "plan": PLAN,
    "category": "LICENSE",
    "licenseResource": {
      "coresPerLicense": CORES_PER_LICENSE,
      "amount": NUMBER_OF_LICENSES,
      "license": `LICENSE_URI`
      }
}

Replace the following:

  • COMMITMENT_NAME: the name for your commitment.
  • LICENSE_URI: the license URI. For example: https://www.googleapis.com/compute/v1/projects/myproject/global/licenses/sles-sap-12
  • NUMBER_OF_LICENSES: the number of licenses you plan to purchase.
  • CORES_PER_LICENSE: the number of cores per license. Enter 1-2 3-4, or 5+.
  • PLAN: enter the plan length: 12-month or 36-month.
  • REGION: the region where this commitment applies.

For example, the following commitment is for 4 SLES for SAP licenses with 3-4 cores per license for 36 months in the us-central1 region.

POST https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-central1/commitments

{
    "name": "commitment-3",
    "plan": "THIRTY_SIX_MONTH",
    "category": "LICENSE",
    "licenseResource": {
      "coresPerLicense": "3-4",
      "amount": "4",
      "license": "https://www.googleapis.com/compute/v1/projects/suse-sap-cloud/global/licenses/sles-sap-12"
      }
}

Apply committed use discount recommendations

Committed use discount recommendations are available in the Google Cloud console. The Recommender generates a card with information about your VM usage over the last 30 days. If your VMs show a trend of uncommitted usage over 30 days, the Recommender classifies this as an opportunity to purchase committed use discounts to reduce your VM costs.

Usage is considered uncommitted and eligible if the following is true.

  • The VM was active for the entire duration of the 30 days.
  • The VM's SKU is part of an eligible committed use discount bucket.
  • The VM's usage was not already covered by an existing commitment.

Recommendations are refreshed once per day and take the last 30 days of usage history into consideration.

Recommendations for committed use discounts are generated by two separate algorithms, which you can select from when purchasing (or accepting) them on the summary card.

  • Stable usage recommendations cover minimum stable usage over time.
  • Optimal recommendations are based on overall usage and might cover resources that are not on all the time.

You can read more about commitment recommendations in the committed use discount recommender documentation.

Limitations

Committed use discount recommendations are available for the CPU and memory component of machine type commitments only. Committed use discount recommendations are not available for SSD, GPU or license commitments.

Review and accept a recommendation

For how to purchase the recommended commitments, see purchasing recommendations.

Dismiss a recommendation

For how to dismiss your commitment recommendations or to restore recommendations that were previously dismissed, see dismissing recommendations.

History of recommendations

To view the history of your applied and dismissed commitment recommendations, see viewing the history of recommendations.

Enable discount sharing for hardware commitments

By default, hardware resource-based CUDs are applied to the project where you purchased your resource-based commitments and are project-scoped discounts. If you move the project for which you purchased your commitments to a different Cloud Billing account, then you continue to receive the applicable committed use discounts for that project under the new Cloud Billing account.

To share the discount for hardware commitments across eligible usage in all projects linked to your Cloud Billing account, enable committed use discount sharing from the Google Cloud console.

When you enable committed use discount sharing, the commitment scope is changed from Project to Billing account. After you change your commitment scope to Billing account by enabling discount sharing, you cannot disable discount sharing to revert back to project scope. Rather, Cloud Billing Support must perform this action for you.

Discount sharing works in conjunction with your attribution configuration. You can choose to use proportional attribution or prioritized attribution.

Unless you configure your attribution preferences first, when you enable discount sharing, it defaults to using proportional attribution for your Compute Engine resource-based commitments.

If you want to configure your attribution configuration before you enable discount sharing, see choose attribution for resource-based commitments for more information and how to enable each type of attribution.

Complete the following steps to enable committed use discount sharing:

  1. Sign in to your Cloud Billing account in the Google Cloud console.

    Sign in to your Cloud Billing account

  2. At the prompt, choose the Cloud Billing account for which you'd like to configure your committed use discounts to use discount sharing. The Billing Overview page opens for the selected Cloud Billing account.

  3. From the Billing navigation menu, select CUD analysis to view the Committed use discounts analysis page.

  4. On the Committed use discount analysis page, from the Commitment type menu, select Resource-based commitments.

  5. Below the Resource based commitments report title, locate the Commitment scope.

    • Project scope indicates that discount sharing is not enabled for resource-based committed use discounts. Project-scope discounts are only applied to eligible usage in the project in which the commitments are purchased.
    • Billing account scope indicates that discount sharing is already enabled for the resource-based commitments. Billing-account-scope commitments apply the committed use discounts across all eligible usage in all projects associated with the Cloud Billing account.
  6. To change the commitment scope setting, select Edit.

    • If the current scope is Project, in the text entry box, type Enable to enable discount sharing across the billing account, then click Enable Billing Account Scope to save your changes.

    • If the current scope is Billing account, then discount sharing is already enabled. To disable discount sharing and revert to Project-scoped commitments, click Contact support.

You only need to enable discount sharing on one project-scoped resource-based commitment to affect the scope of all resource-based commitments in the same Cloud Billing account. When you enable committed use discount sharing, your commitment scope changes as follows:

  • All of your current and active resource-based committed use discounts in all of the projects under the same Cloud Billing account, including those you previously purchased and new ones you purchase in the future, are shared across your Cloud Billing account.
  • When you change your commitment scope configuration, such as creating a new project linked to the Cloud Billing account, or linking an existing project to the Cloud Billing account, the change takes effect on the following day at 12 AM (midnight) US and Canadian Pacific Time (UTC-8 or UTC-7).
  • If you move the project that had the original commitment to a new Cloud Billing account, your discount sharing settings change. For information on the effects of changing the Cloud Billing account for a project, see Change the Cloud Billing account linked to a project.

To get a better understanding of how committed use discounts impact and appear on your bill, see Understand your bill with committed use discounts.

View your commitments

View the list of all your commitments in the Google Cloud console, the Google Cloud CLI, or REST.

Console

In the Google Cloud console, view a list of commitments in the Committed use discounts page.

Go to Committed use discounts

gcloud

Make a request using the commitments list command:

gcloud compute commitments list

The tool returns a list of commitments:

 NAME              REGION    END_TIMESTAMP                  STATUS
 my-commitment     us-east1  2018-03-17T00:00:00.000-07:00  NOT_YET_ACTIVE

REST

You can get a list of commitments across all regions by making an aggregatedList request to the following URL:

https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/commitments

Which returns a list of commitments:

"commitments": [
{
  "kind": "compute#commitment",
  "id": "3294122326373778983",
  "creationTimestamp": "2017-02-09T15:18:32.411-08:00",
  "name": "example-commitment",
  "region": "https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/commitments/example-commitment",
  "status": "NOT_YET_ACTIVE",
  "statusMessage": "The commitment is not yet active (its startTimestamp is in the future). It will not apply to current resource usage.",
  "plan": "TWELVE_MONTH",
  "startTimestamp": "2017-02-10T00:00:00.000-08:00",
  "endTimestamp": "2018-02-10T00:00:00.000-08:00",
  "resources": [
    {
      "type": "VCPU",
      "amount": "5"
    },
    {
      "type": "MEMORY",
      "amount": "32500"
    }]
  }
]

Modify a commitment

You can modify your active commitments in the following ways:

After you create the commitment, you can't modify the commitment's project, type, or region.

Cancel a commitment

After you create a commitment, you can't cancel it. You must pay the agreed upon monthly amount for the duration of the commitment. Commitments are not affected by future pricing changes to the standard prices for Compute Engine resources.

If you accidentally purchased a commitment or made a mistake configuring your commitment, contact Google Cloud Billing Support for help.

Understand your bill with committed use discounts

Read the following documents to gain a better understanding of your billing:

Support

If you have any questions regarding committed use discounts on your bill, you can contact Google Cloud support.

What's next