refined README and removed unwanted scheduling policies.

This commit is contained in:
Pradyumna Kaushik 2017-09-26 00:05:19 -04:00
parent dc279801b7
commit 1c4b6f0f01
16 changed files with 8 additions and 3896 deletions

View file

@ -1,75 +1,10 @@
Electron: A power budget manager
======================================
Elektron: A Pluggable Mesos framework with power-aware capabilities
===================================================================
To Do:
Elektron is a Mesos framework that behaves as a playground for developers to experiment with different scheduling policies to launch ad-hoc jobs.
Elektron 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.
* 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?)
* Adding type of scheduler to be used, to be picked from a config file, along with it's configurable parameters.
* Write test code for each scheduler (This should be after the design change)
Possible to setup the constants at runtime based on the environment?
* Log fix for declining offer -- different reason when insufficient resources as compared to when there are no
longer any tasks to schedule.
* Have a centralised logFile that can be filtered by identifier. All electron logs should go into this file.
* Make def.Task an interface for further modularization and flexibility.
* Convert def#WattsToConsider(...) to be a receiver of def.Task and change the name of it to Watts(...).
* **Critical** -- Add software requirements to the README.md (Mesos version, RAPL version, PCP version, Go version...)
* **Critical** -- Retrofit to use Go 1.8 sorting techniques. Use def/taskUtils.go for reference.
* Handle powerclass not configured on a node condition. As of now, an assumption is made that the powerclass is configured
* Refine the sorting algorithm that sorts the clusters of tasks retrieved using the kmeans algorithm. This also involves the reduction in time complexity of the same.
* Use the generic task sorter in def/taskUtils.go to sort the tasks based on CPU or RAM etc. Remove the existing sorters present in def/task.go.
for all the nodes.
**Requires [Performance Co-Pilot](http://pcp.io/) 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 Watts as Resource, run the following command,
`./electron -workload <workload json> -wattsAsAResource`
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
}
]
```
#Features
* Pluggable Scheduling policies
* Pluggable Power-Capping strategies
* Cluster resource monitoring