Skip to content

UDC-GAC/WattsManager

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

560 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WattsManager

This project provides a Dynamic Power Manager (DPM) that treats power as a first-class system resource in container-based environments, supporting power budget allocation across multiple hierarchical levels (e.g., container, application, user) and real-time redistribution according to demand, including on-the-fly power budget modifications.

The platform provides support for Singularity/Apptainer containers. It is provided an automatic way of deploying the platform through IaC tools such as Ansible, as well as a web interface to easily manage the platform and execute workloads. The serverless platform may be deployed on an existing physical cluster, or on a virtual cluster for testing purposes.

Getting Started

Prerequisites

For the virtual cluster deployment

  • Vagrant
  • VirtualBox
  • Vagrant plugins: vagrant-hostmanager, vagrant-reload, vagrant-vbguest

vagrant-reload plugin is only necessary when deploying nodes with cgroups V1, since V2 is the default installation

You may install the vagrant plugins with the following commands:

vagrant plugin install vagrant-hostmanager
vagrant plugin install vagrant-reload
vagrant plugin install vagrant-vbguest

For the physical cluster deployment

  • Python
  • Ansible
  • Passwordless SSH login between nodes

Only one cluster node (i.e. master node) needs to have Ansible installed and a passwordless SSH login to the remaining ones

Quickstart

The platform need to be installed and deployed on the master node (or "server" node), while the containers will be deployed on the remaining cluster nodes (workers or "hosts").

  • You can clone this repository and the required frameworks with

    git clone --recurse-submodules https://github.com/UDC-GAC/ServerlessYARN.git
    
  • Once cloned, change directory to the root directory

    cd ServerlessYARN
    
  • Create configuration modules in YAML format in ansible/provisioning/config/modules to customize your environment (templates are provided in the same directory).

    If these configuration module files are not created, they will be created automatically during startup by copying the corresponding templates.

  • You may deploy the virtual cluster with Vagrant (if needed):

    vagrant up
    
  • Inside the server node (you can use "vagrant ssh" to log in when using a virtual cluster) go to the "ansible/provisioning/scripts" directory within the platform root directory (accessible from "/vagrant" on the virtual cluster). Then, execute the script to install and set up all the necessary requirements for the platform and start its services:

    bash start_all.sh
    

    By default this script will generate an Ansible inventory considering the current configuration. You can skip this phase with the -s option to configure the inventory yourself.

    When deploying on a physical cluster that relies on SLURM for job scheduling, the Ansible inventory will be automatically generated considering the available nodes. Again, you can skip this phase with the -s option.

  • Once you are done, you can shutdown the virtual cluster (if applicable) exiting the server node and executing:

    vagrant halt
    
  • Or you may destroy the whole virtual cluster with:

    vagrant destroy --force
    
  • For deployments on physical clusters relying on SLURM you may consider the sample script for sbatch provided in the "slurm" directory.

Web Interface

Once done with the installation and launch, you can visit the web interface in your browser in {server-ip}:9000/ui (or the port specified in the config file instead of 9000 if modified).

You will see a Home page with 5 subpages:

  • Containers: here you can see and manage all the deployed containers
  • Hosts: here you can see and manage all hosts as well as their containers
  • Apps: here you can see and manage all apps as well as their associated containers
  • Services: here you can see and manage all services of the platform
  • Rules: here you can see and manage all scaling rules that are followed by the services

Used tools

  • Vagrant - IaC tool for deploying the virtual cluster
  • VirtualBox - VM Software to support the machines of the cluster
  • Ansible - Configuration Management Tool
  • Apptainer - Singularity/Apptainer Containers management tool
  • Django - Web development framework
  • Python - Programming language
  • Serverless Containers - Container resource scaling framework
  • BDWatchdog - Resource monitoring framework

Authors

License

This project is distributed as free software and is publicly available under the GNU GPLv3 license (see the LICENSE file for more details).

About

This project provides a Dynamic Power Manager (DPM) designed to treat power as a first-class system resource in container-based environments.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 72.6%
  • Shell 16.1%
  • HTML 4.8%
  • C 4.3%
  • CSS 1.0%
  • JavaScript 0.7%
  • Other 0.5%