Added ability to tie benchmark to single node. Uses offer hostname for this, maybe a better soluition would be to look at offer attributes. Added shorthand for workloads flag -w
This commit is contained in:
parent
e0b1fc22e2
commit
dd7a42f582
2 changed files with 20 additions and 4 deletions
23
scheduler.go
23
scheduler.go
|
@ -11,6 +11,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
"bitbucket.org/bingcloud/electron/pcp"
|
"bitbucket.org/bingcloud/electron/pcp"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -179,13 +180,21 @@ func (s *electronScheduler) ResourceOffers(driver sched.SchedulerDriver, offers
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
tasks := []*mesos.TaskInfo{}
|
tasks := []*mesos.TaskInfo{}
|
||||||
|
|
||||||
// First fit strategy
|
// First fit strategy
|
||||||
|
|
||||||
taken := false
|
taken := false
|
||||||
for i, task := range s.tasks {
|
for i, task := range s.tasks {
|
||||||
|
|
||||||
|
// Check host if it exists
|
||||||
|
if task.Host != "" {
|
||||||
|
// Don't take offer if it doesn't match our task's host requirement
|
||||||
|
if !strings.HasPrefix(*offer.Hostname, task.Host) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Decision to take the offer or not
|
// Decision to take the offer or not
|
||||||
if TakeOffer(offer, task) {
|
if TakeOffer(offer, task) {
|
||||||
|
|
||||||
|
@ -274,10 +283,16 @@ func (s *electronScheduler) Error(_ sched.SchedulerDriver, err string) {
|
||||||
log.Printf("Receiving an error: %s", err)
|
log.Printf("Receiving an error: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var master = flag.String("master", "xavier:5050", "Location of leading Mesos master")
|
||||||
|
var tasksFile = flag.String("workload", "", "JSON file containing task definitions")
|
||||||
|
var ignoreWatts = flag.Bool("ignoreWatts", false, "Don't use watts from offers")
|
||||||
|
|
||||||
|
// Short hand args
|
||||||
|
func init(){
|
||||||
|
flag.StringVar(tasksFile, "w", "", "JSON file containing task definitions")
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
master := flag.String("master", "xavier:5050", "Location of leading Mesos master")
|
|
||||||
tasksFile := flag.String("workload", "", "JSON file containing task definitions")
|
|
||||||
ignoreWatts := flag.Bool("ignoreWatts", false, "Don't use watts from offers")
|
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
IGNORE_WATTS = *ignoreWatts
|
IGNORE_WATTS = *ignoreWatts
|
||||||
|
|
1
task.go
1
task.go
|
@ -14,6 +14,7 @@ type Task struct {
|
||||||
Image string `json:"image"`
|
Image string `json:"image"`
|
||||||
CMD string `json:"cmd"`
|
CMD string `json:"cmd"`
|
||||||
Instances *int `json:"inst"`
|
Instances *int `json:"inst"`
|
||||||
|
Host string `json:"host"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func TasksFromJSON(uri string) ([]Task, error) {
|
func TasksFromJSON(uri string) ([]Task, error) {
|
||||||
|
|
Reference in a new issue