Skip to content
Cloud Efficiency Hub

Overprovisioned Memory in Cloud Run Services

Explanation

Cloud Run allows users to allocate up to 8 GB of memory per container instance. If memory is overestimated - often as a buffer or based on unvalidated assumptions - customers pay for more than what the workload consumes during execution. Unlike in VM-based environments where memory might be shared or underutilized without direct cost impact, in Cloud Run, you're billed precisely for what you allocate. This inefficiency often results from: * Defaulting to high memory values for "safety" * Not using monitoring tools to assess actual memory usage * Lack of clear ownership over service tuning

Relevant Billing Model

Charged based on: * Allocated memory and CPU per instance * Execution duration (rounded up to the nearest 100ms) * Number of requests and networking egress (if applicable) Even unused allocated memory is fully billed per 100ms of execution time, making memory overprovisioning a direct driver of excess cost.

Detection

  • Identify Cloud Run services with high memory allocation (e.g., \>1 GB)
  • Compare against actual memory usage (visible in Cloud Monitoring or Cloud Trace)
  • Review historical memory usage variance across multiple invocations
  • Flag workloads with stable memory use but large memory headroom
  • Check for default templates or configurations that may enforce high memory settings

Remediation

  • Reduce memory allocation to match observed memory usage with a buffer for spikes
  • Continuously monitor function-level memory metrics to right-size allocations over time
  • Set up proactive alerts for services with memory allocation far exceeding usage
  • Refactor container images or code to optimize memory consumption
  • Establish governance policies or templates that encourage conservative starting values

Relevant Documentation