Prepare and test your skills

Prepare and test your skills

Monitoring quotas, limits, and capacity planning across Google Cloud data services means forecasting load, checking quota boundaries, and securing physical capacity before pipelines run. Cloud Monitoring collects utilization and quota metrics for alerts and dashboards, Cloud Quotas (opens in a new tab) enforces per-project consumption boundaries, and Compute Engine reservations (opens in a new tab) hold zonal capacity for batch and AI workloads. Together they give business-critical pipelines deterministic performance during normal load and peak events.
Forecasting load and estimating capacity means turning expected demand into a concrete resource footprint with redundancy and cost. The forecast starts from historical trends, seasonal variations, spikes during special events, and business growth such as expansion to new geographies. That forecast then determines the size of Compute Engine managed instance groups (MIGs), VM machine type, and the number, type, and size of Persistent Disk volumes, with cost estimated in the Google Cloud Pricing Calculator.
Resource efficiency is the relationship between application load and consumed CPU and memory. Efficiency is measured with load tests under normal and peak conditions and is retested regularly because efficiency can deteriorate at very high load and change over time. For N+1 redundancy, every component in the stack has at least one extra component beyond the minimum needed for forecast load, so loss of one element does not stop processing.
Quotas and system limits are the boundaries that determine whether a data pipeline can start and scale. Quotas are per-project limits with default values that can typically be raised, while system limits are fixed values that cannot be changed. When a task tries to consume more than its quota allows, the system blocks access and the task fails.
Quota scope and type determine where the constraint appears:
Cloud Dataflow (opens in a new tab) shows how quotas and limits combine. Each project allows up to 3,000,000 Dataflow requests per minute, up to 25 concurrent Dataflow jobs by default, and up to 125 concurrent jobs per organization when organization quotas are used. Each job can use up to 2,000 Compute Engine instances, or up to 4,000 instances for a streaming job using Streaming Engine or a batch job using service-based Dataflow Shuffle when no worker zone is specified. Per-user API pressure is also bounded, including 15,000 monitoring requests per minute and 60 job creation, template, and update requests per minute each.
Exam tip: A quota can be raised through a quota adjustment, but a system limit cannot be changed; exceeding a quota blocks the task until capacity is freed or the quota is increased.
Monitoring utilization, forecasts, and quota consumption means using metrics to act before a quota or capacity shortage stops a pipeline. Teams evaluate average and peak utilization of top workloads, analyze historical utilization to identify trends, project future needs, and run load tests to verify how much load the system can handle while meeting latency targets. Alerts on quota metrics fire when usage approaches quota limits, which prevents failures from exhausted resource or API rate quotas.
Two mechanisms extend monitoring into automated management. Capacity Planner, available as a pre-GA offering, shows historical and forecasted usage of VM instances, Persistent Disk volumes, and GPUs, shows reservations, helps reserve resources in advance, and shows how close a project is to quota limits with automatic quota increase requests. The quota adjuster monitors consumption and proactively submits quota adjustment requests when use approaches its quota value, which is enabled from the IAM and Admin Quotas and system limits page when Status shows Enabled.
Adjusting quotas before pipeline execution means formally requesting a higher quota value justified by forecasting and load testing. There are three submission paths: through the Google Cloud console, through a support case, and directly with the account team or Technical Account Manager (TAM). The console path is preferred when the increase must be addressed quickly, while requests needing deeper analysis may require the account team.
A console-based adjustment follows an ordered workflow where each step depends on the prior selection:
Most requests are evaluated by automated systems based on resource availability, length of time using Google Cloud, and other factors. Requests that do not meet the criteria are denied, so critical batch operations should submit increases well before peak events rather than during execution.
Securing deterministic capacity with reservations means holding assured Compute Engine capacity in a specific zone for a chosen machine type. A Compute Engine reservation covers a specified number of VMs, including memory, vCPUs, and optional GPUs and Local SSD disks, so matching VMs can be created whenever needed. The reservation protects critical batch operations from zone-level stock-outs of high-demand accelerators, can be specific to one project or shared across projects, and GPU reservations can be shared with Vertex AI custom training or prediction jobs.
| Reservation type | When capacity is secured | Choose when |
|---|---|---|
| On-demand reservation | Provisioned at request time, if requested capacity is available | The need is immediate and current zonal availability is sufficient |
| Future reservation | Requested in advance for a future period with a high level of assurance | The workload is a peak event or critical batch window that must have deterministic availability |
Consumption control determines which VMs use the held capacity. The Use reservation automatically option lets any matching VM consume the reservation, while the Select specific reservation option restricts consumption to VMs that target the reservation by name. For AI throughput, select regions that offer AI zones with GPU and Tensor Processing Unit (TPU) resources for training and inference, distribute resources across zones and regions to tolerate outages, and procure future reservations well in advance.
Configuring dynamic autoscaling and resource provisioning in Cloud Dataflow and Dataproc means giving pipelines enough compute when load rises without paying for idle workers when load falls. Cloud Dataflow and Managed Service for Apache Spark (Dataproc) provide the computation layer, while durable data lives in a separate storage layer in the same zone and region. Capacity planning (opens in a new tab) from forecasted load, redundancy, quotas, reservations, and ephemeral clusters work together to meet strict processing service level agreements (SLAs).
Planning capacity from forecasted load and measured efficiency means translating demand into resources and then verifying the estimate. Forecasts account for the number of users, request rate, historical trends, seasonal variations, spikes during special events, and business changes such as expansion to new geographies. That forecast drives the estimate of Google Cloud resources for the chosen architecture and its performance and reliability objectives.
Resource efficiency is the relationship between load and consumed CPU and memory. Teams run load tests under normal and peak conditions to measure throughput, backlog growth, and CPU utilization, and repeat benchmarking because efficiency can deteriorate under very high load and change over time. The Google Cloud Pricing Calculator translates required MIG sizes, VM machine types, and persistent disk counts, types, and sizes into cost. Utilization is monitored continuously and requirements are reassessed so scaling tracks real demand rather than the original estimate.
Guaranteeing headroom with redundancy, quotas, and reservations means building spare capacity and assured limits beyond the minimum estimate. To achieve N+1 redundancy, every component in the application stack must have at least one redundant component beyond the minimum necessary. In each region, teams leverage three zones rather than two and overprovision capacity by a third more than the estimate to absorb failovers and spikes without violating SLAs.
Google Cloud service quotas are per-project limits that can block scale-out if ignored. The two types serve different purposes:
Quotas can be zonal, regional, or global. Teams review current resource and API rate quotas for every service in the pipeline, ensure they cover peak capacity plus redundancy, and request a quota adjustment when required. To ensure Compute Engine capacity is actually available when a critical job must scale, teams create a reservation that provides assured capacity in a specific zone for a specified number of VMs of a chosen machine type, specific to one project or shared across projects.
Separating storage from compute means giving durable data and temporary processing different lifecycles on different platforms. The data storage layer is where data is saved as files on a file system or managed through a database system. The data computation layer loads data from the storage layer, processes it, and saves results to a target system, which can be the source storage layer.
Keeping the layers separate improves flexibility and cost because the computation layer does not have to run all the time. Teams deploy storage and compute on separate platforms in the same zone and region, for example by moving storage from Hadoop Distributed File System (HDFS) to Cloud Storage and using a Dataproc cluster for computation. Co-location in the same zone reduces communication time and latency, lowers outbound data transfer cost, and reduces input/output operations between storage and compute.
Common choices for each layer include:
Because some storage tools also handle computation, teams must explicitly decide which service owns durable state and which owns temporary processing. The pipeline then depends on storage for durability and on the compute service for elastic execution.
Using ephemeral Dataproc clusters means creating and deleting many short-lived clusters sized for individual jobs instead of running one long-lived cluster. Managed Service for Apache Spark (Dataproc) deploys fast, fully managed Hadoop and Spark clusters and integrates with the BigQuery connector, a Java library that lets Hadoop and Spark write directly to BigQuery. Migrating existing Hadoop, Spark, or Flink jobs (opens in a new tab) incrementally lets each job be isolated, evaluated for its own machine needs, and proven without affecting production.
Ephemeral clusters provide elastic provisioning with clear tradeoffs:
This separation reduces resource use because storage remains in Cloud Storage while compute exists only for the job duration. The model provisions Dataproc resources dynamically around throughput and backlog without maintaining idle workers.
Designing for high availability and aggregate uptime means removing single points of failure and understanding how chained services reduce total availability. High availability (HA) generally applies to regional deployments and disaster recovery (DR) applies to multi-region deployments.
| Approach | Scope | Replication | Recovery objective |
|---|---|---|---|
| HA | Zones within a single region, often active-active with no single point of failure (SPOF) | Synchronous replication between zones, provided by default by many managed services | Zero or near-zero recovery time objective (RTO) and recovery point objective (RPO) |
| DR | Two or more regions, unless using multi-regional or global services | Typically asynchronous replication that must be explicitly defined, plus manual or semi-automated failover | Higher RTO and RPO that must be assessed for each critical application |
Teams eliminate single points of failure so a scaled pipeline does not depend on one VM, server, or database. Automatic recreation of failed VMs comes from Compute Engine MIGs, even traffic distribution comes from load balancing, database resilience comes from HA configurations such as Cloud SQL, and data availability improves with regional persistent disks that use synchronous replication. Regional MIGs and GKE regional clusters resist zone outages, while managed multi-regional services such as Spanner and Cloud Storage resist region outages.
Aggregate availability falls as more tiers are chained. For chained tiers, multiply availability: tier1_availability x tier2_availability x tierN_availability. Four tiers at 99.9% each yield only 99.6% aggregate availability, which is lower than the least-available tier. Where feasible, teams choose parallelization over chaining because parallel services yield 1 minus (1 minus A) x (1 minus B), so two 99% services in parallel reach 99.99% while the same services chained reach only 98%. Increasing nines costs more, since 99.9% allows about 86 seconds of downtime per day while 99% allows 864 seconds, so teams select services with uptime SLAs that support the overall processing SLA.
Exam tip: Chained availability multiplies to a lower value (.99 x .99 = 98%), while parallelized availability uses 1-(1-A) x (1-B) to a higher value (99.99% for two 99% services).
Managing BigQuery (opens in a new tab) reservations and slot allocation means controlling how compute capacity is assigned to analysis jobs and billed. A slot is a virtual compute unit that BigQuery uses to execute SQL queries and other job types, and BigQuery automatically determines how many slots each query needs based on data size, query complexity, and available capacity. Business-critical workloads use capacity-based billing to guarantee dedicated slots, while variable workloads can remain on shared on-demand capacity. Teams can switch models at any time and combine both models across projects in the same organization.
Slots and workload management models define how BigQuery meters usage, limits throughput, and controls cost. With on-demand billing, queries draw from a shared pool of slots and pay for bytes processed, with throughput limited to a shared quota of up to 2,000 slots per project. With capacity-based billing, teams create dedicated pools of slots and pay for slot-hours, with centralized purchasing and predictable billing through baselines and commitments. Capacity-based billing uses BigQuery editions, where each edition has its own price point and feature set.
| On-demand | Capacity-based | |
|---|---|---|
| Usage model | Data scanned or processed | Dedicated slots or autoscaling slots |
| Unit of metering | TiB, minimum 10 MiB per query | Slot-hours, 1-minute minimum by default |
| Capacity range | Up to 2,000 slots per project | 50 slots minimum per reservation, up to regional quota |
| Cost control | Optional project-level or user-level quotas | Slot budget configured per reservation |
| Capacity discounts | Pay-as-you-go only | Optional monthly or annual slot commitments |
On-demand billing requires no configuration and bills per project after monthly free usage is consumed. Capacity-based billing requires slot reservations and project assignments, but it allows baseline slots, autoscaled slots, and optional fluid scaling with no minimum duration. Teams choose capacity-based billing when enterprise reporting and extract-load-transform workloads have concurrent queries and predictable consumption that need guaranteed throughput.
Reservations, commitments, and autoscaling are the three capacity sources that isolate critical workloads from contention. A reservation is a named pool of capacity-based slots that isolates one set of workloads from another. For example, a reservation named prod can hold production capacity while a separate reservation named test holds testing capacity, so test jobs do not compete with production queries for the same slots. Reservations can also be separated by department, environment, or criticality to prevent contention between production and ad-hoc jobs.
Capacity-based reservations combine baseline slots, autoscaling slots, and commitments. Baseline slots provide always-available dedicated capacity, autoscaling slots expand and contract with demand above the baseline, and slot commitments cover steady-state usage at a lower price than pay-as-you-go autoscaling. Reservations can also use idle slots from other reservations when those idle slots are available within the project. To estimate size, teams start from observed concurrency and utilization; for example, 4,000 slots may support about 100 medium-complexity queries simultaneously, and sustained high slot utilization plus high wait times in query execution plans indicates that additional slots are needed.
Reservation assignments (opens in a new tab) route work from a project, folder, organization, or principal to a specific reservation pool. Teams cannot allocate a specific number of slots at the assignment level because slots are managed at the reservation level; the assignment only determines which reservation pool supplies the slots. The assignee and the reservation must be in the same organization and in the same location, and an assignment to a failover reservation remains pending in the secondary location.
BigQuery selects the reservation by using the single most specific assignment in the resource hierarchy. Project assignments beat folder assignments, and folder assignments beat organization assignments, while folder and organization assignments are not available to standard edition reservations. Within the same assignee resource, a user-specific assignment that matches the principal identity of the user or service account takes priority over a generic assignment with no principal, so a specific user can be routed to a different reservation even when the project has a generic assignment. The default limit is 100 user-specific assignments per project.
An assignment becomes active only when the target reservation can supply capacity. The reservation must meet at least one condition: non-zero baseline slots, non-zero autoscaling slots, or enabled use of idle slots when idle slots are available. If none is met, the assignment stays pending and the project executes as on-demand. Assignments can also be separated by job type, including QUERY, CONTINUOUS, PIPELINE, BACKGROUND, and ML_EXTERNAL, so different job categories from the same project can use different reservations.
Exam tip: A project uses its most specific assignment — project beats folder beats organization — and an assignment with no baseline, no autoscaling, and no available idle slots stays pending and runs as on-demand.
Estimating, monitoring, and maintaining BigQuery capacity means verifying that reservations match real concurrency and wait times. Reservation capacity is monitored from the Workload management page in the Google Cloud console, where teams view capacity commitments and see where slot reservations are assigned. Cloud Monitoring (opens in a new tab) provides dashboards and custom charts for incidents, datasets, tables, projects, query times, and slot utilization, plus alert policies that notify administrators when conditions such as long query execution time occur. The Slot estimator uses historical performance metrics to recommend organization capacity, while audit logs and system-table dashboards help analyze slot usage across queries, jobs, projects, and reservations.
Assignment routing can be verified without changing capacity. Teams query the INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT view to find which reservation serves a project for a given job type, check the principal column in INFORMATION_SCHEMA.ASSIGNMENTS for user-specific rules, and query INFORMATION_SCHEMA.JOBS to verify which reservation executed a specific job. Creating or moving an assignment requires the bigquery.reservationAssignments.create permission on both the administration project that owns the reservation and the assignee, which is included in the BigQuery Admin, BigQuery Resource Admin, and BigQuery Resource Editor roles. Regular review of utilization, wait times, and assignment coverage lets teams add baseline capacity, enable autoscaling, or purchase commitments before critical pipelines queue for slots.
Quotas are per-project limits with default values that can typically be raised through a quota adjustment, while system limits are fixed values that cannot be changed. When a task tries to consume more than its quota allows, the system blocks access and the task fails until capacity is freed or the quota is increased.
Use a future reservation when a peak event or critical batch window must have deterministic availability because it is requested in advance for a future period with a high level of assurance. Use an on-demand reservation when the need is immediate and current zonal availability is sufficient because it is provisioned at request time if requested capacity is available.
With on-demand billing, queries draw from a shared pool of up to 2,000 slots per project and pay for bytes processed, while with capacity-based billing teams create dedicated pools of slots in reservations and pay for slot-hours. Capacity-based billing requires a reservation with at least 50 slots and routes work by the most specific assignment, and it can combine baseline slots, autoscaling slots, and slot commitments to isolate critical workloads.
Your enterprise runs mission-critical hourly data transformation pipelines and executive dashboards in a dedicated Production folder, while data scientists run unpredictable, heavy ad-hoc queries in an Analytics folder. During peak hours, ad-hoc queries consume excessive compute resources, causing slot contention and delayed execution for production pipelines.
You need to implement a capacity-based workload management architecture in BigQuery that:
Which configuration should you implement?
Last updated