Elektron is a lightweight, power-aware, pluggable Mesos framework that behaves as a playground to experiment with different scheduling policies to schedule ad-hoc jobs in docker containers.
This repository has been archived on 2024-04-10. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
Find a file
2018-09-28 01:16:08 -04:00
constants Fixed the comments to be capitalized at the start and also terminate with a period. 2017-09-28 15:36:47 -04:00
def Merged in differentSwitchingMechanisms (pull request #14) 2018-09-23 19:21:52 -04:00
docs Added architecture diagram. Refined description. 2018-09-28 01:16:08 -04:00
environment Now retrieving path to rapl throttle script by reading value of an environment variable. Also, stored the RAPL_PKG_Throttle.py script in a directory called scripts/. The location of this needs to be stored in an environment variable named RAPL_PKG_THROTTLE_LOCATION. 2017-09-28 15:01:06 -04:00
logging Merged in differentSwitchingMechanisms (pull request #14) 2018-09-23 19:21:52 -04:00
pcp formatted code. 2018-09-23 18:23:37 -04:00
power-capping added utility to compute the scheduling window. Right now there's only criteria on which this is determined -- fillNextOfferCycle. So, the schedWindow is the max number of tasks, that aren't yet scheduled, whose aggregate resource requirement is as close as possible to the resource available in the next round of resource offers. To be able to make the most use of the next offer cycle, one would need to perform a non-polynomial search of the TaskQueue and as this is computationally expensive, a linear search is performed on the TaskQueue. Retrofitted scheduling policies to also call utilities.schedUtils#schedWindowResizingStrategy#Apply before switching to a new scheduling policy. 2018-09-23 18:03:14 -04:00
rapl added utility to compute the scheduling window. Right now there's only criteria on which this is determined -- fillNextOfferCycle. So, the schedWindow is the max number of tasks, that aren't yet scheduled, whose aggregate resource requirement is as close as possible to the resource available in the next round of resource offers. To be able to make the most use of the next offer cycle, one would need to perform a non-polynomial search of the TaskQueue and as this is computationally expensive, a linear search is performed on the TaskQueue. Retrofitted scheduling policies to also call utilities.schedUtils#schedWindowResizingStrategy#Apply before switching to a new scheduling policy. 2018-09-23 18:03:14 -04:00
schedulers fixed import. 2018-09-23 19:28:06 -04:00
scripts Now retrieving path to rapl throttle script by reading value of an environment variable. Also, stored the RAPL_PKG_Throttle.py script in a directory called scripts/. The location of this needs to be stored in an environment variable named RAPL_PKG_THROTTLE_LOCATION. 2017-09-28 15:01:06 -04:00
utilities Merged in fixSchedWindowSize (pull request #13) 2018-09-23 19:18:50 -04:00
.gitignore added .gitignore. 2018-09-23 18:39:11 -04:00
config updated pcp config file to not include stratos information 2017-09-26 01:40:17 -04:00
README.md Added architecture diagram. Refined description. 2018-09-28 01:16:08 -04:00
schedPolConfig.json Merged in differentSwitchingMechanisms (pull request #14) 2018-09-23 19:21:52 -04:00
scheduler.go Merged in differentSwitchingMechanisms (pull request #14) 2018-09-23 19:21:52 -04:00
workload_sample.json updated example workload definition 2017-09-26 01:37:28 -04:00

Elektron: A Pluggable Mesos framework with power-aware capabilities

Elektron is a Mesos framework that behaves as a playground for developers to experiment with different scheduling policies to schedule ad-hoc jobs in docker containers. It is designed as a lightweight, configurable framework, which can be used in conjunction with built-in power-capping policies to reduce the peak power and/or energy usage of co-scheduled tasks.

However, in addition to being a scheduler, Elektron also takes advantage of tools such as Performance Co-Pilot and RAPL to help contain the power envelope within defined thresholds, reduce peak power consumption, and also reduce total energy consumption. Elektron is able to leverage the Mesos-provided resource abstraction to allow different algorithms to decide how to consume resource offers made by a Mesos Master.

#Architecture [elektron-arch]: docs/Elektron-Architecture.png "Elektron Architecture"

![arch][elektron-arch]

#Features

#Software Requirements Requires Performance Co-Pilot tool pmdumptext to be installed on the machine on which electron is launched for logging to work and PCP collector agents installed on the Mesos Agents

Compatible with the following versions,

  • Mesos 1.5.0
  • Go 1.9.7

#Build and Run Compile the source code using the go build tool as shown below.

go build -o elektron

How to run (Use the --help option to get information about other command-line options):

./elektron -workload <workload json>

To run electron with Scheduling Policy Switching Enabled, run the following command,

./electron -workload <workload json> -ssp -spConfig <schedPolicy config file>

Workload schema:

[
   {
      "name": "minife",
      "cpu": 3.0,
      "ram": 4096,
      "watts": 63.141,
      "class_to_watts": {
        "A": 93.062,
        "B": 65.552,
        "C": 57.897,
        "D": 60.729
      },
      "image": "rdelvalle/minife:electron1",
      "cmd": "cd src && mpirun -np 3 miniFE.x -nx 100 -ny 100 -nz 100",
      "inst": 10
   },
   {
      "name": "dgemm",
      "cpu": 3.0,
      "ram": 32,
      "watts": 85.903,
      "class_to_watts": {
        "A": 114.789,
        "B": 89.133,
        "C": 82.672,
        "D": 81.944
      },
      "image": "rdelvalle/dgemm:electron1",
      "cmd": "/./mt-dgemm 1024",
      "inst": 10
   }
]