# Missed FlexRS for Delay-Tolerant Batch Dataflow Jobs

Canonical: https://www.pointfive.co/efficiency-hub/inefficiencies/missed-flexrs-for-delay-tolerant-batch-dataflow-jobs

Flexible Resource Scheduling (FlexRS) is a Dataflow option for batch pipelines that trades start time for price.

By: PointFive

Updated: 2026-09-28

[Cloud Efficiency Hub](https://www.pointfive.co/efficiency-hub) 

The short version

Flexible Resource Scheduling (FlexRS) is a Dataflow option for batch pipelines that trades start time for price.

PointFive Research

Cloud cost research at PointFive

GCP service

[GCP Dataflow](https://www.pointfive.co/efficiency-hub/cloud-services/gcp-dataflow)

Category

[Compute](https://www.pointfive.co/efficiency-hub/service-category/compute)

Reference

CER-0489

Type

Suboptimal Pricing Model

## Explanation

Why the waste happens and who it affects.

Dataflow queues the job and starts it within six hours of creation, and runs it on a mix of preemptible and regular VMs with Dataflow Shuffle. In return, vCPU and memory are billed at a uniform discounted rate that Google describes as about 40% below regular Dataflow prices, regardless of which worker type ran the work.

Many batch pipelines have no need to start the moment they are submitted: nightly and weekly aggregations, backfills, reprocessing jobs and exports that only need to finish by a deadline hours away. They still run with default scheduling and pay full batch rates because FlexRS has to be requested explicitly per job.

## Billing model

The pricing dimensions that drive this cost.

Dataflow bills worker resources per second, per job; rates vary by region.

Batch worker vCPU and memory

Billed per vCPU-hour and GiB-hour at regular batch rates

FlexRS vCPU and memory

Billed at a uniform discounted rate, about 40% below regular Dataflow prices, regardless of worker type

Dataflow Shuffle

Billed per GiB of data processed during shuffle; FlexRS enables Shuffle automatically and Shuffle is not discounted

Persistent Disk

FlexRS workers use 25 GB of Persistent Disk each, billed at normal rates

## How to detect

4 checks to find it in your estate.

- List batch jobs and check whether the FlexRS goal was set (flexResourceSchedulingGoal in the job environment, or the flexRSGoal / flexrs\_goal pipeline option); jobs without it run on regular pricing

- Identify scheduled batch jobs whose completion deadline leaves more than six hours of slack after submission

- Rank candidate jobs by vCPU and memory spend from the Cloud Billing export, since the discount applies only to those resources

- Exclude jobs that need GPUs, Compute Engine reservations, specific zones, custom autoscaling or M2, M3 or H3 machine types, which FlexRS does not support

## How to fix

4 ways to remove the waste.

- Launch eligible batch jobs with --flexRSGoal=COST\_OPTIMIZED (Java) or --flexrs\_goal=COST\_OPTIMIZED (Python and Go), including in Flex and classic templates

- Move job submission earlier in the schedule so the up-to-six-hour queue still meets downstream deadlines

- Set maxNumWorkers (max\_num\_workers) to bound cost, since numWorkers only sets the initial worker count under FlexRS

- Keep time-critical or interactive batch jobs on standard scheduling, and use Apache Beam SDK 2.12.0 or later

## Documentation

Vendor references for pricing and configuration.

- [Use Flexible Resource Scheduling in Cloud Dataflow  docs.cloud.google.com](https://docs.cloud.google.com/dataflow/docs/guides/flexrs)

- [Dataflow pricing  cloud.google.com](https://cloud.google.com/dataflow/pricing)

- [Best practices for Dataflow cost optimization  docs.cloud.google.com](https://docs.cloud.google.com/dataflow/docs/optimize-costs)

## Related inefficiencies

[Browse the library](https://www.pointfive.co/efficiency-hub)

- GCP Dataflow  CER-0244

### [Idle Dataflow Workers Running After Pipeline Failure](https://www.pointfive.co/efficiency-hub/inefficiencies/idle-dataflow-workers-running-after-pipeline-failure-f6b1a)

When a Dataflow pipeline fails - often due to dependency issues, misconfigurations, or data format mismatches-its worker instances may remain active temporarily until the service terminates them. In some cases, misconfigured jobs, stuck...

Compute

- GCP Dataflow  CER-0251

### [Pipeline Breaks from Outdated Dependency Images in Dataflow](https://www.pointfive.co/efficiency-hub/inefficiencies/pipeline-breaks-from-outdated-dependency-images-in-dataflow-fbd63)

In restricted or isolated network environments, Dataflow workers often cannot reach the public internet to download runtime dependencies. To operate securely, organizations build custom worker images that bundle required libraries....

Compute

- GCP Dataflow  CER-0490

### [Exactly-Once Streaming Mode Where At-Least-Once Is Sufficient in Dataflow](https://www.pointfive.co/efficiency-hub/inefficiencies/exactly-once-streaming-mode-where-at-least-once-is-sufficient-in-dataflow)

Every Dataflow streaming job runs in exactly-once mode unless configured otherwise. Exactly-once guarantees that records are not dropped or duplicated, which requires Dataflow to deduplicate and checkpoint state along the pipeline. Google...

Compute

---
Source: the public page above. Product screenshots and illustrative interfaces are examples, not live customer data.

