Carbon-aware scheduling by default: first balance
Actualizado: 2026-05-03
Two years ago, carbon-aware scheduling was experimental and manually enabled by teams motivated by sustainability or regulatory pressure. With several Kubernetes distributions and managed platforms incorporating it as a default or very visible option, time to evaluate whether the promise holds in practice. The base hypothesis — that deciding where and when to execute loads according to grid carbon intensity reduces emissions without significantly penalizing performance — has had enough time to prove itself and generate real data.
Key takeaways
- The benefit is proportional to what fraction of your load is elastic in time or geography; if less than 20% is, total cluster savings will be modest.
- Best results (15-30% carbon intensity reduction) come from deferrable loads: nightly batch, model training, CI compilation and testing, report generation, video rendering.
- Kepler metrics have a known error of up to 20% in mixed loads; interpret its figures as indications, not exact truths.
- Moving loads to distant regions with better mix can increase net emissions if inter-datacenter traffic grows notably.
- The fundamentals matter more: efficient architecture, rightsizing, idle infrastructure shutdown, and efficient hardware selection produce savings typically larger than carbon-aware alone.
What carbon-aware scheduling is
The fundamental idea is simple. Electricity carbon intensity (grams of CO2 per kilowatt-hour) varies significantly through the day and between regions, depending on which sources are generating at each moment. Grids with lots of wind or solar have high-cleanness periods when it’s windy or sunny, and high-dirtiness periods dominated by gas and coal. Moving elastic loads to cleaner regions or hours reduces emissions without changing the amount of work done.
The consolidated technical pattern combines several components:
- An energy consumption meter per load — Kepler for Kubernetes is the open reference.
- A real-time carbon intensity data source — Electricity Maps, WattTime, provider APIs.
- A scheduler integrating this info — kube-scheduler with carbon-aware extensions, or Karpenter with specific policies.
- Tracking metrics that allow verifying real impact.
Google Cloud, Azure, and AWS have integrated carbon-aware in their managed services during 2024 and 2025. The open ecosystem, with Kepler graduated in CNCF in late 2024 and Green Software Foundation contributing standards (Software Carbon Intensity, SCI), allows implementing the pattern also over own infrastructure.
Where it’s worked best
Cases where carbon-aware scheduling has brought real emission reductions share a common pattern: workloads tolerating temporal or geographic flexibility without degrading user experience. Types that work:
- Nightly batch processing.
- Model training.
- CI code compilation and testing.
- Report generation and analytics.
- Video rendering.
In these scenarios, companies adopting carbon-aware seriously report real emission reductions between 15 and 30 percent depending on case.
A concrete example: a daily personalization model training in an e-commerce company, running several hours with no schedule SLA. Automatically moving execution to the cleanest window of the day reduces job carbon intensity by about twenty percent versus running in the morning.
Where savings are marginal or nonexistent
Online applications with active users can’t be moved geographically without adding latency, and can’t be delayed without degrading experience. Production APIs, web services facing real traffic, transactional databases: all this runs when needed, where the user is, and carbon-aware scheduling has no levers to move without affecting service.
In an analysis of a deployment reviewed recently, more than eighty percent of total energy consumption corresponded to non-deferrable loads. Applying carbon-aware only to the remaining fraction, total cluster savings were less than five percent. The honest reading: benefit is proportional to what fraction of your load is elastic, not to whether you enabled the feature.
Cases where carbon-aware can produce counterproductive results:
- Moving loads to far regions with better mix can increase net emissions if inter-datacenter traffic grows notably.
- Delaying jobs to wait for clean windows can increase operational cost if it requires keeping reserved resources.
The honest-measurement problem
A central challenge is precisely measuring how much CO2 is really saved. The carbon intensity reported by APIs like Electricity Maps or WattTime is reasonable approximation but not perfect, with update delay and limited granularity. Kepler in Kubernetes has known limitations: per-pod consumption is estimated from processor, memory, and disk metrics applying energy models that don’t always reflect new or specific hardware well. Measurements have known error up to 20 percent in mixed loads. This doesn’t invalidate the tool, but does force interpreting its figures as indications, not exact truths.
A practical example with Karpenter
A pattern that works well in 2026 combines Karpenter with carbon-aware policies. The idea is preferring regions with lower intensity for new node provisioning when the scenario allows, keeping latency restrictions for sensitive loads. The YAML policy, combined with a controller updating a weight based on carbon intensity by region and hour, dynamically moves Karpenter’s preference. Loads tolerating the “batch” taint are scheduled in the best-mix region at that moment. In a deployment I monitor, this policy applied to training and nightly processing reduced mean intensity by between 20 and 25 percent after three months.
When it pays
In early 2026, with carbon-aware scheduling becoming a standard capability of mature platforms, the practical recommendation is measured:
- Honestly identify what fraction of your load is really elastic in time or geography; if less than 20% is, total savings will be modest.
- Calculate implementation and measurement cost against expected benefit; for some teams effort exceeds potential savings.
- If you decide to adopt it, invest in honest measurement with Kepler, Software Carbon Intensity, or equivalent, and verify figures with real data instead of trusting what the platform promises.
- Consider carbon-aware scheduling as one piece among several of a technical sustainability strategy. Efficient architecture, resource rightsizing, idle infrastructure shutdown, code optimization, runtime language choice, and efficient hardware selection produce savings typically larger than carbon-aware alone.
Conclusion
In 2026, with available technology and mature operational capability, doing nothing to reduce the carbon footprint of workloads is starting to be hard to justify. But doing it with honesty about limits and serious measurement is the only approach producing lasting, credible results. The intellectual integrity of reporting real savings and acknowledging limits is more valuable long-term than any inflated figure of avoided emissions.
It’s not one or the other; it’s combining all available fronts: carbon-aware scheduling for elastic loads, efficient architecture for everyone, and honest metrics for both.