Skip to content

Latest commit

 

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ThrottlePoint

Energy Optimization Governor for HPC systems.

ThrottlePoint dynamically caps CPU frequency and NVIDIA GPU power based on electricity price, grid carbon intensity, and temperature. Which signals drive the decision is fully configurable, and you can plug in your own temperature source.

It runs from cron as root, with no daemon and no batch-system integration. Each run grades current conditions from 1 (cheap and clean) to 10 (expensive and dirty) and sets the CPU's maximum scaling frequency accordingly. Running jobs are never signalled, paused, or killed; they simply run under a lower clock ceiling while conditions are bad.

All the functionality and code logic located in src/hpc_eff stem from https://gitlab.cesnet.cz/dexter/hpc_eff.


Documentation

docs/deployment.md Start here. Clean node → running, verified deployment of the primary use case, RPM and DEB.
docs/configuration.md Every key of /etc/hpc_eff/config.ini.
docs/regulation-modes.md How the rating is computed; the thermal/GPU mode.
docs/monitoring.md Database schema, state.json, useful queries.
docs/troubleshooting.md Symptom-first fault finding.

Use cases

  • Driver: carbon intensity of electricity
    • Primary GreenDIGIT scenario
    • Lowering carbon impact
  • Driver: electricity cost or consumption profile
    • Lowering operational costs
  • Driver: datacenter temperature
    • Optimize datacenter usage
    • Continuity of services
  • Driver: power-grid or local heating signals
    • Lowering operational costs, carbon impact
ThrottlePoint Use Case 1 ThrottlePoint Use Case 2 ThrottlePoint Use Case 3 ThrottlePoint Use Case 4

Quick start

git clone git@github.com:CESNET/hpc_eff.git
cd hpc_eff

RHEL / AlmaLinux / Rocky

sudo dnf install -y ipmitool make kernel-tools rpm-build rpmdevtools
make                                   # build + install the RPM

Debian / Ubuntu

sudo apt install -y build-essential devscripts debhelper dh-python \
                    python3-all python3-setuptools fakeroot
sudo apt install -y ipmitool cpufrequtils python3-numpy python3-requests
make deb
sudo dpkg -i ../hpc-eff_*.deb          # this also enables the cron job

Then configure and start:

sudo vi /etc/hpc_eff/config.ini        # control_mode=co2, CO₂ API key, frequency table
sudo hpc-eff                           # one real run: applies a cap immediately
sudo hpc-eff --enable                  # install /etc/cron.d/hpc-eff (every 10 min)

Full prerequisites, verification steps, cluster rollout, and uninstall: docs/deployment.md.


Regulation modes

[MODE] control_mode is the single switch per node. It is required.

Mode CPU GPU Inputs
co2 rating 1–10 → max-frequency cap untouched spot price + grid carbon intensity
temperature hysteresis thermal bands NVIDIA power limiting one temperature sensor

CPU regulation is mutually exclusive: a node is driven either by carbon/price or by temperature, never both. Details: docs/regulation-modes.md.


Data sources

Signal Source Notes
Electricity price spotovaelektrina.cz (Czech OTE spot market) Current price via API; the 12-month baseline is scraped from HTML
Carbon intensity Nowtricity (default) or Wattnet Selectable via [CO2_API] TYPE; Nowtricity needs an API key
Temperature IPMI sensor, HTTP API, or your own Python module "Bring your own reader": see docs/configuration.md

Logging

Every run writes one row to /var/lib/hpc_eff/history.db (SQLite) and rewrites /var/lib/hpc_eff/state.json with the current evaluation plus a rolling history. Schema and queries: docs/monitoring.md.


License

BSD-3-Clause. See LICENSE.

About

Energy Optimization Governor

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages