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.
processes added to clean up after we finish running. Made all tasks run on bridged network mode so that benchmarks that heavily utilize network are protected from eachother. I.e: Tradebeans, tradesoap |
||
---|---|---|
pcp | ||
config | ||
metrics.go | ||
README.md | ||
scheduler.go | ||
states.go | ||
task.go | ||
workload_1.json |
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
Requires Performance-Copilot tool pmdumptext to be installed on the machine on which electron is launched for logging to work
How to run:
./electron -workload <workload.json> -ignoreWatts <true or false>
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
},
{
"name": "dgemm",
"cpu": 3.0,
"ram": 4096,
"watts": 50,
"image": "gouravr/dgemm:v2",
"cmd": "/./mt-dgemm 1024",
"inst": 9
}
]