Skip to main content

EcoFreq: Dynamic carbon- and price-aware power scaling for CPUs and GPUs

Project description

EcoFreq: compute with cleaner energy

CC BY-NC-SA 4.0

In many regions with a high share of renewables - such as Germany, Spain, UK or California - CO2 emissions per kWh of electricity may vary two-fold within a single day, and up to four-fold within a year. This is due to both, variable production from solar and wind, and variable demand (peak hours vs. night-time/weekends). Hence, reducing energy consumption during these periods of high carbon intesity leads to overproportionate CO2 savings. This is exactly the idea behind EcoFreq: it modulates CPU/GPU power consumption in realtime according to the current "greenness" of the grid energy mix. Importantly, this modulation is absolutely transparent to user applications: they will run as usual without interruption, "accelerating" in times when energy comes mostly from renewables, and being throttled when fossil generation increases.

And it gets even better if you have a dynamic electricity tariff (example1, example2) or solar panels: (being an) EcoFreq can save you a few cents ;)

TL;DR Just look at those awesome plots from electricitymap.org and you'll get the idea:

Installation

Prerequisites:

First, install EcoFreq package using pip or pipx:

pipx install ecofreq

This will install EcoFreq locally under the current (non-privileged) user. Since power limiting typically requires root privileges, you will need sudo permissions to use all features of EcoFreq (see details).

Alternatively, you can install and run EcoFreq under root:

sudo pipx install ecofreq

This is less secure, but makes configuration simpler.

For production use, you will likely want to configure EcoFreq daemon to run in the background: (HOWTO)

Usage

  • For a quick test of EcoFreq on your system without configuration overhead (using mock CO2 provider):
ecofreq -c mock -l test.log
sudo systemctl start ecofreq
sudo systemctl status ecofreq
sudo systemctl stop ecofreq

Command-line tool ecoctl allows to query and control the EcoFreq service. If you want to run ecoctl without sudo (recommended), either add your user to the ecofreq group, or configure socket permissions accordingly.

  • Show EcoFreq status:
ecoctl
  • Change power scaling policy:
ecoctl policy co2:step:100=0.7:200=0.5

ecoctl policy const:50%

ecoctl policy maxperf
  • Report energy and CO2 for a program run (assuming it runs exclusively -> to be improved):
ecorun sleep 10

time_s:     10.003
pwr_avg_w:  88.724
energy_j:   887.5
energy_kwh: 0.0
co2_g:      0.098
cost_ct:    0.001
  • Report energy and CO2 statistics for a local EcoFreq instance (default log file):
ecostat.py

EcoStat v0.0.1

Loading data from log file: /var/log/ecofreq.log

Time interval:               2022-01-01 00:03:30 - 2022-06-30 23:53:23
Monitoring active:           175 days, 20:24:55
Monitoring inactive:         0:16:44
CO2 intensity range [g/kWh]: 109 - 545
CO2 intensity mean [g/kWh]:  341
Energy consumed [J]:         4358414437.5
Energy consumed [kWh]:       1210.671
= electric car travel [km]:  6053
Total CO2 emitted [kg]:      409.507177

Idle time:                   41 days, 9:43:30
Idle energy [kWh]:           127.437
Idle = e-car travel [km]:    637
Idle CO2 [kg]:               44.531762

For more examples, see USAGE.md

Configuration

See CONFIG.md

Citation

Oleksiy Kozlov, Alexandros Stamatakis. EcoFreq: Compute with Cheaper, Cleaner Energy via Carbon-Aware Power Scaling, ISC-2024.

Open access: https://ieeexplore.ieee.org/document/10528928

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ecofreq-0.0.4.tar.gz (69.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ecofreq-0.0.4-py3-none-any.whl (85.6 kB view details)

Uploaded Python 3

File details

Details for the file ecofreq-0.0.4.tar.gz.

File metadata

  • Download URL: ecofreq-0.0.4.tar.gz
  • Upload date:
  • Size: 69.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for ecofreq-0.0.4.tar.gz
Algorithm Hash digest
SHA256 7d7f68dc0b079e22f39f73a915849137bf61ea1862f5985c7fead0914e288b54
MD5 0df4d62145fd4993f4fd014cbc9d28f1
BLAKE2b-256 2db708395d34aaba1e08a821942726c62a4dde8ad438c2ab7b2988233716841c

See more details on using hashes here.

File details

Details for the file ecofreq-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: ecofreq-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 85.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for ecofreq-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 bc12e27d7e9e8aad43954c7d166dbf00bc915a653faee68ed1612aac92d95102
MD5 03b11e73023b3cb9e35b23c98b2e30d6
BLAKE2b-256 4526b23ea4da0129403ae5ebe5aa92fff398cf8af92b022b52d210109ed76427

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page