About reservations

This document gives you an overview of reservations. To learn more about thedifferent types of reservations, seeChoose a reservation type.

When you create a reservation, Compute Engine verifies that therequested capacity is available in the specified zone. If so, thenCompute Engine reserves resources, creates the reservation, and thefollowing is enabled:

  • You can consume the reserved resources to create virtual machine (VM)instances, and the reserved resources remain available until you delete thereservation.

  • You're charged for the reserved resources at the same on-demand rate asrunning VMs, including any applicable discounts, as long as the reservationexists.

Reservations are useful for growth, migrations, or disaster recovery.

How reservations work

A reservation provides a high level of assurance of capacity for one or more VMswith the configuration the user specifies.You might also use a reservation withCompute Engine commitmentsorother products that use VMs.

When you create a reservation, you define the following properties:

When you stop, suspend, or delete a VM that consumes a reservation, the VM nolonger counts toward the reservation. The reserved capacity becomes availableagain.

If you want to delete a reservation to release the reserved capacity, but keepany VMs that consume the reservation, then consider the following:

  • You can delete an automatically consumed reservation without stopping orsuspending VMs. After you delete the reservation, any VMs that wereconsuming it keep running. You keep incurring charges for them.

  • You can only delete a specifically targeted reservation if no VMs consumeit. If you stop or suspend VMs, then, after you delete the reservation, youcan only restart or resume the VMs if you create a new specifically targetedreservation with a name, zone, and properties that match the deletedreservation.

How shared reservations work

Each VM in a shared reservation can be consumed by a VM in either the projectthat created the reservation (owner project) or any of the projectsthe reservation is shared with (consumer projects). When a VMstops consuming a shared reservation, the shared reservation can be consumed bya different VM in any of the projects that the reservation is shared with.If a shared reservation reserves multiple VMs, VMs from multipleprojects can consume the same shared reservation simultaneously.

By default, projects can't create and modify shared reservations. To create andmodify a shared reservation in a project, the project must be added to theallowlist of theShared Reservations Owner Projects (compute.sharedReservationsOwnerProjects) organizational policy constraint.If you share a reservation, then it is affected byadditional quota requirements and hasdifferentconsumption behavior than single-projectreservations.

Caution: If you migrate a project that created or consumed sharedreservations to a different organization, its shared reservations experience thefollowing effects:
  • Any shared reservations created in the migrated project (any shared reservations where the migrated project is specified as the owner project) are deleted. Running VMs are not affected. The project is not automatically removed from theShared Reservations Owner Projects (compute.sharedReservationsOwnerProjects) organizational policy constraint, but you can optionally remove it.
  • The migrated project stops consuming resources from any reservations in the previous organization that were shared with it (any shared reservations where the migrated project is specified as a consumer project). The shared reservation attempts to hold on to the capacity for these resources. If the reservation cannot hold on to the capacity immediately due to capacity constraints, Compute Engine continues to attempt to replenish this capacity. Until all of the capacity is replenished, you are only billed for the reserved capacity.

Requirements

All reservations have the following requirements:

  • A VM can consume a reservation only if all of the following properties forboth the VM and the reservationexactly match:

    • Project

    • Zone

    • Machine type

    • Minimum CPU platform

    • GPU type and count (if any)

    • Local SSD disk type and count (if any)

    • Reservation affinity

      • Reservation affinity requirements vary based on the reservation'sconsumption type.
    • Compact placement policy (if any)

      • A reservation can optionally include acompact placement policyto indicate that its reserved VMs should be located as close to eachother as possible to reduce network latency among them. If areservation specifies a compact placement policy, then it can onlybe consumed by VMs that specify the same compact placement policy.
    • Location hint (if any)

      • A reservation can optionally include thelocationHint field, whichyou can only specify when creating reservations or VMs usingREST. Google doesn't recommend specifying thelocationHintfield when creating reservations.
  • You must have unusedquota available in your project forthe resources that you're reserving. If the reservation is createdsuccessfully, then quota for those resources is consumed immediately.

Additional requirements for reservations attached to commitments

Additionally, reservations that are attached to commitments have the followingrequirements:

To learn more, seeAttach reservations to resource-based commitments.

Additional requirements for reservations created from an instance template

Additionally, if you create a reservation by specifying aninstance template, make sure of thefollowing:

  • You must create your reservation in the same region, zone, and project as theresources within the template. Specifically:

    • Anyregionalorzonal resourcesthat are specified in an instance template—such as a machine type or adisk—restrict the use of the template to the locations where thoseresources exist. For example, if your instance template specifies anexisting disk in theus-central1-a zone, then you must create yourreservation in the same zone.

    • An instance template contains project-specific settings, so you can onlyaccess and use an instance template within the same project. For theprojects a shared reservation is shared with, you must create similartemplates in those projects or create VMs by specifying properties directly.

  • If the instance template specifies a compact placement policy, you must createaspecific reservation. Then, when you create the VMs toconsume the reservation, you mustspecifically targetthe reservation by name. Otherwise, the VMs can't consume the reservation.

Additional quota requirements for shared reservations

Additionally, there are the following quota implications for the owner andconsumer projects of a shared reservation:

  • Owner project: The owner project consumes quota as follows:

    • When creating the shared reservation, the owner project consumes quota forthe total reserved resources.

    • When consuming reserved resources, the owner project consumes quota for theresources that it consumes.

  • Consumer projects: The consumer projects consume quota only when consumingthe reserved resources and only for the resources that they consume.

For example, assume that project A (the owner project) creates a sharedreservation for 10 resources and shares the reservation with project B and C(the consumer projects). Upon creating the shared reservation, project Aconsumes quota for 10 resources. Then, if project A and B consume 2 reservedresources each, project A and B each consume quota for 2 resources. In total,project A consumes quota for 12 resources, project B consumes quota for 2resources, and project C consumes quota for 0 resources (as it didn't consumethe reservation).

Additional requirements for reservations with compact placement policies

Additionally, to specify a compact placement policyfor a reservation, make sure of the following requirements:

  • The compact placement policy must support reservations:

    • The compact placement policy can't specify a maximum distance value of1.

    • The compact placement policy can't be specified by more than one reservationat a time.

  • The reservation must support compact placement policies:

    • You can only specify a compact placement policy for an on-demand,single-project, specifically targeted reservation that is not attached to acommitment.

    • The VMs reserved by the reservation must be supported by the compactplacement policy:

      • The reservation's zone must be within the region of the compactplacement policy.

      • The reservation's number of VMs can't exceed the maximum number of VMsthat the compact placement policy supports.

      • The reservation's machine type must be supported by compact placementpolicies.

Restrictions

All reservations have the following restrictions:

Additional restrictions for reservations attached to commitments

Additionally, reservations that are attached to commitments have the followingrestrictions:

  • You can attach reservations only to resource-based commitments.

  • You can attach reservations only while you're purchasing your commitment.

  • You can attach a specific reservation to only one single commitment.

  • You can't delete or resize a reservation that is attached to a commitment.Instead, see how toreplace reservations that are attached to commitments.

To learn more, seeAttach reservations to resource-based commitments.

Additional restrictions for shared reservations

Additionally, shared reservations have the following restrictions:

  • You can only share reservations with projects in the same organizationas the project that creates the reservation.

  • Each shared reservation can be shared with 1 to 100 consumer projects.

  • For each organization, you can create up to 100 shared reservations for eachunique combination ofVM properties.

  • You can onlylist the reservations created by a specific project.This means that each shared reservation is only listed in the project thatcreated it—you can't list all of the shared reservations inan organization or all of the reservations that are shared with a specificproject.

  • If you create a shared reservation byspecifying an instance template,only the users within your project can access the same instance template anduse it to create VMs or other reservations.

  • You can't specify a compact placement policy when creating a sharedreservation.

  • If you move a project that was using shared reservations to a neworganization, its shared reservations don't migrate to the new organization.Any shared reservations that were created in this project are deleted, and anyreservations from the previous organization that were shared with this projectcan't be consumed in the new organization. For more information, seeHow shared reservations work in thisdocument.

You can mitigate the limitations of some of these requirements by following thebest practices for shared reservations.

Additional restrictions for reservations with compact placement policies

Additionally, reservations that specify a compact placement policyhave the following restrictions:

  • You can't share a compact placement policy across reservations. Instead, youmust use a separate compact placement policy for each reservation that youwant to apply a compact placement policy to.

  • You can only specify compact placement policies.Any other type of resourcepolicies, such as instance schedules or snapshot schedules, isn't supported.

Billing

Reservations are billed at the same rate as their reserved resources, includingthe same on-demand prices and1-minute minimum chargesas unreserved, running VMs.Sustained use discounts (SUDs),CUDs, and custom pricing alsoapply as they would for running VMs.

Note: When you use reservations with Google Cloud Serverless for Apache Spark, you can'treceive resource-based CUDs for those resources. If you use reservations withDataflow, then you can receive CUDs only forspecificallytargeted reservations that specify accelerators. For more information, seeUseCompute Engine reservations withDataflow.

For example, suppose that you have the following scenario:

  • You have a 3-vCPU commitment inus-central1.
  • You're running 5 vCPUs inus-central1-a.
  • You have a 10-vCPU reservation inus-central1-a.

Reservations that include committed use discounts.

In this scenario, Google Cloud bills you as follows:

Covered byNumber of vCPUs
Committed use discount price3
On-demand price (2 vCPU used reservations + 5 vCPU unused reservations)7

A reservation incurs charges for its reserved resources for as long as thereservation exists, regardless of whether or not its resources are being used.While consuming a reservation, a VM does not incur duplicate resources chargessince the reservation is already billed for the cost of the reserved resources.For details, seeVMs pricing.

Additionally, you can monitor the consumption trends of your reservations toreduce unnecessary costs from wasted or unused resources. For more information,seeMonitor reservations consumption.

Additional billing information for shared reservations

There are no additional charges for using shared reservations—they arebilled at the same price as single-project Compute Engine reservations.But, the project that is billed for shared reservations changes with consumptionas different projects might qualify for different CUDs.

The billing project and price for shared reservations are managed as follows:

  • Billing project: By default, the owner project is billed for the sharedreservation. But, when a resource from a shared reservation is being consumedby a consumer project, the consumer project is billed for the reservationinstead.
  • Billing discounts: By default, billing uses the on-demand price. But, ifyou are eligible to receive CUDs for either the project that is being billedor the Cloud Billing account associated with that project, then thediscounted price is used instead.

What's next

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-12-15 UTC.