Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GREEN: Towards Scalable Energy-Efficient Workload Scheduling and Placement in the Cloud

Overview

This is the GitHub Repo for paper "GREEN: Towards Scalable Energy-Efficient Workload Scheduling and Placement in the Cloud".

GREEN is a graph neural network + reinforcement learning (GNN-RL) solution for energy-efficient cloud workload scheduling and placement that performs datacenter resource management as graph optimizations. GREEN generalizes from small training datacenters to 10× larger datacenters, and GREEN is better than previous state-of-the-art energy-aware cloud resource managers by >2x in datacenter total energy and deadline-driven SLO metrics. GREEN is scale-up generalizable due to its scale-invariant RL formulation and scalable GNN architecture.

GREEN's GNN-RL solver is implemented based on DGL, NetworkX, PyTorch, and Numpy. The cloud simulation is implemented using a modified COSCO Cloud Simulator (pre-modification implementations at https://github.com/imperial-qore/COSCO). The real-world testbed is implemented on top of Docker Swarm (https://docs.docker.com/engine/swarm/) and a modified COSCO Real-World Framework (pre-modification implementations at https://github.com/imperial-qore/COSCO/tree/master/framework).

Repository Layout

GREEN/
├── COSCO_exp/          # experimental testbed implementations
    ├── COSCO_ggcn      # testbed implementations for the COSCO Cloud Simulator
    └── COSCO_cloudlab  # testbed implementations for real-world experiments using customized Docker Swarm + COSCO Real-World Framework
├── dqgnn/              # GREEN's GNN-RL solver implementation (RL agent + graph environment + GNN neural network architecture)
├── env_setup/          # GREEN GNN-RL implementation's software dependency 
├── LICENSE
└── README.md

Environment Setup

0. Preparation

To run GREEN's GNN-RL solver, a machine with Conda is needed. Linux + Miniconda is highly recommended.

1. Install dependencies of GNN-RL solver

To install GNN-RL solver's default conda environment (Python 3.9) with DGL (1.0.1) using CUDA GPUs (CUDA 11.6), run:

cd env_setup/conda_env_yml_files
conda create -f eehc_env_2025-04-28.yml

This would create a Conda environment named gnnrl.

Note: if GNN-RL solver only needs to run on CPU (e.g., installing on a machine without CUDA GPU), then the CUDA-related conda packages can be removed from eehc_env_2025-04-28.yml.

2. Install testbed(s) (Cloud Simulator or Docker Swarm)

2-A Environment setup for Cloud Simulator

To install COSCO Cloud Simulator's software dependencies, run:

cd COSCO_exp/COSCO_ggcn
conda activate gnnrl
pip install -r requirements.txt

Note: You may need to download additional workload-trace-related dataset(s) required by COSCO Simulator (e.g., BitBrains, AzurePublicDataset, etc.)

2-B Environment setup for Real-World Docker Swarm

In this setup, a testbed with at least two linux machines (a master node + at least one worker node) is needed. Root on all linux machines are required. The root account on master node should have already configured SSH-key based password-less login to each worker node.

The IP addresses of all worker nodes should be written in COSCO_exp/COSCO_cloudlab/framework/install_scripts/cloudlab_install/all_worker_ips.

The following commands should be executed on the master node using root account:

cd COSCO_exp/COSCO_cloudlab/framework/install_scripts/cloudlab_install
chmod +x install_testbed.sh
chmod +x install_testbed_docker_swarm.sh
./install_testbed.sh
./install_testbed_docker_swarm.sh

3. Examples for Runing Experiments

3-A Cloud Simulator

Example 1: training GREEN using our customized COSCO Cloud Simulator, with server-sleep disabled.

cd dqgnn/gnnrl_examples/cloud-simulator/disable_host_suspend
conda activate gnnrl
python -u train.py

Example 2: training GREEN using our customized COSCO Cloud Simulator, with server-sleep enabled (GREEN puts active idle servers to sleep).

cd dqgnn/gnnrl_examples/cloud-simulator/enable_host_suspend
conda activate gnnrl
python -u train.py

3-B Docker Swarm

Example: run LR-MMT scheduler on Docker Swarm real-world testbed.

cd COSCO_exp/COSCO_cloudlab
conda activate gnnrl
python -u main.py

Note: To run GREEN on Docker Swarm testbed, change LRMMTRScheduler in COSCO_exp/COSCO_cloudlab/main.py to DQGNNScheduler (ref: Z:\GREEN\dqgnn\dqgnn-src\src\dqgnn_scheduler.py).

Reference

Please cite our work if you find our code/paper is useful to your work:

@inproceedings{wang2026green,
  title     = {GREEN: Towards Scalable Energy-Efficient Workload Scheduling and Placement in the Cloud},
  author    = {Wang, Jinghua and Tantawi, Asser and Tardieu, Olivier and Youssef, Alaa S. and Eilam, Tamar and Wang, Chen and Bose, Pradip and Wan, Lily (Jiaxin) and Nahrstedt, Klara and Chen, Deming},
  booktitle = {Proceedings of the 63rd ACM/IEEE Design Automation Conference (DAC '26)},
  year      = {2026},
  address   = {Long Beach, California, USA},
  month     = jul,
  isbn      = {979-8-4007-2254-7},
  publisher = {Association for Computing Machinery (ACM)}
}

About

Repo for GREEN: Towards Scalable Energy-Efficient Workload Scheduling and Placement in the Cloud.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages