2016-09-16 16:18:59 -04:00
Electron: A power budget manager
2016-09-16 16:16:33 -04:00
======================================
2016-09-16 16:14:41 -04:00
To Do:
2016-09-16 20:17:08 +00:00
2016-09-16 16:16:33 -04:00
* Create metrics for each task launched [Time to schedule, run time, power used]
* Have calibration phase?
2016-11-10 20:07:04 -05:00
* Add ability to use constraints
2016-09-26 19:14:51 -04:00
* Running average calculations https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average
2016-11-28 22:28:44 -05:00
* Make parameters corresponding to each scheduler configurable (possible to have a config template for each scheduler?)
2017-03-24 16:53:27 -04:00
* Adding type of scheduler to be used, to be picked from a config file, along with it's configurable parameters.
2016-12-15 14:31:35 -05:00
* Write test code for each scheduler (This should be after the design change)
2016-12-20 16:27:44 -05:00
Possible to setup the constants at runtime based on the environment?
2017-01-15 19:48:41 -05:00
* Log fix for declining offer -- different reason when insufficient resources as compared to when there are no
longer any tasks to schedule.
2017-01-15 21:19:01 -05:00
* Have a centralised logFile that can be filtered by identifier. All electron logs should go into this file.
2017-02-08 14:58:57 -05:00
* Make def.Task an interface for further modularization and flexibility.
2017-02-10 20:28:06 -05:00
* Convert def#WattsToConsider (...) to be a receiver of def.Task and change the name of it to Watts(...).
2017-02-25 15:43:32 -05:00
* **Critical** -- Add software requirements to the README.md (Mesos version, RAPL version, PCP version, Go version...)
2017-04-21 17:17:22 -04:00
* **Critical** -- Retrofit to use Go 1.8 sorting techniques. Use def/taskUtils.go for reference.
2017-03-25 20:35:50 -04:00
* Handle powerclass not configured on a node condition. As of now, an assumption is made that the powerclass is configured
2017-08-22 13:09:05 -04:00
* 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.
2017-08-23 20:06:44 -04:00
* 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.
2017-03-25 20:34:58 -04:00
for all the nodes.
2016-11-10 20:07:04 -05:00
2017-01-03 18:10:05 -05:00
**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**
2016-09-26 19:14:51 -04:00
2016-11-23 19:18:19 -05:00
How to run (Use the --help option to get information about other command-line options):
2016-09-26 19:14:51 -04:00
2016-11-30 21:51:55 -05:00
`./electron -workload <workload json>`
2016-12-15 15:38:07 -05:00
2017-03-23 22:25:35 -04:00
To run electron with Watts as Resource, run the following command,
2016-11-30 22:05:42 -05:00
2017-03-23 22:25:35 -04:00
`./electron -workload <workload json> -wattsAsAResource`
2016-11-30 22:05:42 -05:00
2016-09-26 19:14:51 -04:00
Workload schema:
```
[
{
"name": "minife",
"cpu": 3.0,
"ram": 4096,
2017-03-23 22:25:35 -04:00
"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
2016-09-26 19:14:51 -04:00
},
{
"name": "dgemm",
"cpu": 3.0,
2017-03-23 22:25:35 -04:00
"ram": 32,
"watts": 85.903,
"class_to_watts": {
"A": 114.789,
"B": 89.133,
"C": 82.672,
"D": 81.944
},
"image": "rdelvalle/dgemm:electron1",
2016-09-26 19:14:51 -04:00
"cmd": "/./mt-dgemm 1024",
2017-03-23 22:25:35 -04:00
"inst": 10
2016-09-26 19:14:51 -04:00
}
]
2016-11-10 20:07:04 -05:00
```