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
2017-01-08 19:01:08 -08:00
constants changed the CapMargin to 70 and Window to 20 as they are the optimal ones. 2017-01-06 15:56:49 -08:00
def Go fmt on the entire project 2017-01-03 20:57:25 -05:00
pcp Go fmt on the entire project 2017-01-03 20:57:25 -05:00
rapl Sycnrhonized operations that change the value of the cluster wide cap. Added cleverRecap(...) that determines the recap value of the cluster at a much finer level, taking into account the average load on each node in the cluster. Bug fix in cap.go -- closed the session once capping had been done. This prevented from running out of file descriptors. 2016-12-22 22:59:02 -05:00
schedulers removed commented code 2017-01-08 19:01:08 -08:00
utilities Go fmt on the entire project 2017-01-03 20:57:25 -05:00
config basic configuration for pcp 2016-12-22 22:59:01 -05:00
README.md Implemented a scheduling tracer. Logs time date and host:task-ID. Made log prefix more global since it needs to be constant for all log files generated. 2017-01-03 20:30:21 -05:00
scheduler.go changed scheduler to BPSWClassMapWatts. Also, capping is extrema. 2017-01-06 16:46:31 -08:00
workload_sample.json Adding node class mapping for Watts as a resource in binpack 2016-12-23 21:04:15 -05:00

Electron: A power budget manager

To Do:

  • Create metrics for each task launched [Time to schedule, run time, power used]
  • Have calibration phase?
  • Add ability to use constraints
  • Running average calculations https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average
  • Make parameters corresponding to each scheduler configurable (possible to have a config template for each scheduler?)
  • Write test code for each scheduler (This should be after the design change)
  • Some of the constants in constants/constants.go can vary based on the environment.
    Possible to setup the constants at runtime based on the environment?
  • Retrofit schedulers for scheduling tracing

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

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

./electron -workload <workload json>

To run electron with ignoreWatts, run the following command,

./electron -workload <workload json> -ignoreWatts

Workload schema:

[
   {
      "name": "minife",
      "cpu": 3.0,
      "ram": 4096,
      "watts": 50,
      "image": "gouravr/minife:v5",
      "cmd": "cd src && mpirun -np 1 miniFE.x -nx 100 -ny 100 -nz 100",
      "inst": 9,
      "class_to_watts" : {
          "A": 30.2475289996,
          "B": 35.6491229228,
          "C": 24.0476734352
       }

   },
   {
      "name": "dgemm",
      "cpu": 3.0,
      "ram": 4096,
      "watts": 50,
      "image": "gouravr/dgemm:v2",
      "cmd": "/./mt-dgemm 1024",
      "inst": 9,
      "class_to_watts" : {
          "A": 35.2475289996,
          "B": 25.6491229228,
          "C": 29.0476734352
       }
   }
]