Get recommendations for committed use discounts (CUD)

Committed use discount (CUD) recommendations help you optimize the resource costs of the projects in your Cloud Billing account. CUD recommendations are automatically generated using a formula that analyzes historical and recent usage metrics gathered by Cloud Billing, and includes usage covered by existing commitments. You can apply these recommendations to purchase additional commitments and further optimize your Google Cloud costs.

Recommendations are available for a subset of resource-based commitments and a subset of spend-based commitments for eligible products , including Compute flexible commitments.

Refer to the guides on this page to learn about the following tasks:

For more information about the Recommender service, see the Recommender overview.

Understand commitment recommendations

Committed use discount recommendations let you identify spending and usage patterns in your Google Cloud projects. Your spending patterns generate recommendations for spend-based commitments, including Compute flexible commitments, and your usage patterns on Compute Engine generate recommendations for resource-based commitments. The recommendations for resource-based commitments also account for your use of custom machine types on Compute Engine. Purchasing the recommended commitments helps you optimize your Google Cloud costs.

Supported resources and services

This section talks about the resources and services for which you can receive CUD recommendations.

Resource-based CUD recommendations

Resource-based CUD recommendations are available only for vCPUs and Memory of the following machine series:

For more information, see Resource-based commitments.

Spend-based CUD recommendations

Spend-based CUD recommendations are available only for the following services:

  • AlloyDB for PostgreSQL
  • Backup and DR Service
  • Dataflow Streaming CUD Subscription
  • Memorystore
  • Spanner
  • Cloud SQL
  • Compute flexible CUDs
  • Google Cloud VMware Engine
  • Google Cloud NetApp Volumes

For more information, see Spend-based commitments.

Permissions required to view and modify recommendations

Depending on your needs, ask your administrator to assign the following predefined IAM roles:

  • If your Cloud Billing account has resource-based CUD sharing enabled, then you need one of these roles on the Cloud Billing account:

    • To view recommendations only, assign the Billing Account Viewer (roles/billing.viewer) role.
    • To view and modify recommendations, assign the Billing Account Administrator (roles/billing.admin) role.

    Learn how to assign these roles to manage access to a Cloud Billing account.

  • If your Cloud Billing account does not have CUD sharing for resource-based commitments, you need one of these roles on each project attached to your Cloud Billing account that has purchased committed use discounts:

    • To view recommendations only, assign the Viewer (roles/viewer) role on the projects.
    • To view and modify recommendations, assign the Owner (roles/owner) or Editor (roles/editor) role on the projects.

    Learn how to assign these roles to manage access to projects.

If you are using custom roles, update the custom role to include the following individual permissions:

(Click to expand) Permissions required for custom roles

Permissions to simulate scenarios for CUD savings

  • To simulate scenarios based on list prices, you need billing.cudrecommendations.generateDefaultPriceSavingRecommendation
  • If you have a custom pricing contract, you need billing.cudrecommendations.generateCustomPriceSavingRecommendation to simulate scenarios based on your custom prices.

Permissions to view recommendations

To view spend-based CUD recommendations:

  • recommender.spendBasedCommitmentRecommendations.get
  • recommender.spendBasedCommitmentRecommendations.list
  • recommender.spendBasedCommitmentInsights.get
  • recommender.spendBasedCommitmentInsights.list
  • recommender.spendBasedCommitmentRecommenderConfig.get

To view resource-based CUD recommendations:

  • recommender.usageCommitmentRecommendations.get