Carbon-Aware Python Job Scheduling

Carbon-Aware Python Job Scheduling

ISEF Category: Systems Software

Ready to Turn This Idea Into a Real Project?

This guide was put together with the help of AI research tools to give you a solid starting point.But a competitive science fair project lives in the details: refining your research question, fine-tuning your variables, analyzing your data, and presenting your findings like a seasoned scientist.

For next steps tailored to your interests, skill level, and timeline, work one-on-one with a MehtA+ mentor. Learn more about MehtA+ Science & Engineering Research Mentorship →

Subcategory: Other  ·  Difficulty: Intermediate  ·  Setup: Home Setup  ·  Time: 1 to 2 Months

The Hook

Your laptop can finish the same Python job with less climate impact just by waiting for a cleaner hour. That is the whole idea behind carbon-aware scheduling. Instead of running everything right away, your code can pause non-urgent work until the grid gets greener. You can measure the savings with real emissions data, not guesses.

What Is It?

A carbon-aware job scheduler is software that decides when to run a task, not just how to run it. Think of it like a smart line manager for your computer. If a job is urgent, it runs now. If a job can wait, the scheduler checks grid carbon data and chooses a cleaner time.

This project sits at the meeting point of systems software and climate data. The grid carbon signal tells you how much CO2e, or carbon dioxide equivalent, the electricity mix is causing at a given moment. Your scheduler can use public APIs such as WattTime or electricityMap to find lower-carbon windows. Then you compare a normal run with a delayed run and calculate the emissions difference for the same workload.

Why This Is a Good Topic

This is a strong science fair topic because you can test it with code, public data, and clear numbers. You do not need a wet lab. You can build a real tool, compare it against a baseline, and measure whether it saves carbon without breaking the workload. The topic also connects to a real problem, because data centers, labs, and personal computers all consume electricity that varies in carbon intensity over time.

Research Questions

  • How does delaying non-urgent Python jobs to lower-carbon hours affect total kgCO2e for a fixed workload?
  • What is the effect of different scheduling thresholds on carbon savings and job delay?
  • Does a carbon-aware scheduler keep total completion time within an acceptable limit compared with immediate execution?
  • To what extent do daily grid-carbon patterns change the savings from the same batch of jobs?
  • Which workload type, compute-heavy, I/O-heavy, or mixed, gains the most from carbon-aware scheduling?
  • How does using real-time carbon data compare with using a simple time-of-day heuristic?

Basic Materials

  • A laptop or desktop computer with Python installed.
  • A stable internet connection for API calls.
  • Python 3.10 or newer.
  • A code editor such as VS Code or PyCharm Community Edition.
  • A sample workload, such as file processing, image resizing, or data-cleaning scripts.
  • A spreadsheet or CSV template for logging run time, start time, and estimated kgCO2e.
  • Access to public carbon-intensity data from WattTime or electricityMap.

Advanced Materials

  • A local test server or spare machine for repeated runs.
  • Docker for isolating benchmark jobs.
  • Python packages for scheduling, logging, and API access.
  • A database or structured log store for run histories.
  • A workload trace or benchmark suite with repeatable compute patterns.
  • A carbon-emissions model or reporting tool for comparing estimated and measured impact.
  • Optional cloud credits for testing the scheduler on remote compute instances.

Software & Tools

  • Python: Builds the scheduler, runs the benchmark workload, and records timing and emissions data.
  • pandas: Organizes job logs and compares carbon-aware runs with baseline runs.
  • matplotlib: Plots job delay, runtime, and estimated kgCO2e savings.
  • requests: Pulls live carbon-intensity data from public APIs.
  • Jupyter Notebook: Helps you inspect results, tune rules, and make cleaner charts.

Experiment Steps

  1. Define the kind of jobs your scheduler may delay, and write down what counts as non-urgent.
  2. Choose one baseline rule, such as run immediately, so you have a fair comparison.
  3. Select the carbon signal you will use, and decide how often your scheduler checks it.
  4. Design the decision rule that links carbon intensity, job urgency, and permitted delay.
  5. Plan how you will measure success with both runtime impact and estimated kgCO2e savings.
  6. Build controls that separate carbon-aware gains from differences in workload size or network timing.

Common Pitfalls

  • Using a workload that changes size between runs, which makes carbon savings impossible to compare fairly.
  • Trusting one API snapshot instead of logging the carbon signal over the full scheduling window.
  • Letting network failures pause jobs forever, which makes the scheduler unusable in practice.
  • Comparing a carbon-aware run against a baseline with different input files, which confounds the results.
  • Reporting estimated emissions without stating the grid region, time window, or API source used for the calculation.

What Makes This Competitive

A stronger project does more than prove that waiting can save carbon. It tests multiple scheduling rules, compares different workload types, and measures the tradeoff between emissions savings and delay. You can also strengthen the work by validating your estimates with repeated runs, confidence intervals, and a clear baseline. If you build a clean library with logs, configs, and reproducible benchmarks, the project starts to look like real systems research.

Project Variations

  • Use batch image-processing jobs instead of data-cleaning scripts to test whether compute-heavy tasks save more carbon.
  • Compare WattTime and electricityMap signals to see whether different carbon data sources lead to different scheduler choices.
  • Add a fairness rule that limits delay for urgent tasks, then measure how much carbon savings you lose.

Learn More

  • WattTime API documentation: Search for the public API docs to learn how grid carbon intensity is reported and queried.
  • electricityMap API documentation: Search the official developer documentation for live and forecast carbon-intensity data.
  • U.S. Environmental Protection Agency eGRID: Find regional electricity emissions data for background and validation.
  • NOAA Climate.gov: Read articles on electricity demand, weather, and carbon-intensity patterns.
  • MIT OpenCourseWare, Introduction to Algorithms: Review scheduling, queues, and optimization ideas that help you design better rules.
  • PubMed: Search for review articles on carbon-aware computing, green scheduling, and emissions-aware workloads.
Shopping Cart