Retrofitted all the schedulers to now call the offerutils.AddHostIfNew(..) utility function which will dynamically populate the constants.Hosts and constants.PowerClasses.
This commit is contained in:
parent
841c7d5ee8
commit
b4f9a989cb
16 changed files with 37 additions and 75 deletions
|
@ -1,7 +1,6 @@
|
|||
package schedulers
|
||||
|
||||
import (
|
||||
"bitbucket.org/sunybingcloud/electron/constants"
|
||||
"bitbucket.org/sunybingcloud/electron/def"
|
||||
"bitbucket.org/sunybingcloud/electron/utilities/mesosUtils"
|
||||
"bitbucket.org/sunybingcloud/electron/utilities/offerUtils"
|
||||
|
@ -128,10 +127,7 @@ func (s *BinPackSortedWattsSortedOffers) ResourceOffers(driver sched.SchedulerDr
|
|||
log.Println("Sorted Offers:")
|
||||
for i := 0; i < len(offers); i++ {
|
||||
offer := offers[i]
|
||||
if _, ok := constants.Hosts[offer.GetHostname()]; !ok {
|
||||
log.Printf("New host found. Adding host [%s]", offer.GetHostname())
|
||||
constants.Hosts[offer.GetHostname()] = struct{}{}
|
||||
}
|
||||
offerUtils.AddHostIfNew(offer)
|
||||
offerCPU, _, _ := offerUtils.OfferAgg(offer)
|
||||
log.Printf("Offer[%s].CPU = %f\n", offer.GetHostname(), offerCPU)
|
||||
}
|
||||
|
|
|
@ -210,10 +210,7 @@ func (s *BinPackedPistonCapper) ResourceOffers(driver sched.SchedulerDriver, off
|
|||
|
||||
// retrieving the total power for each host in the offers
|
||||
for _, offer := range offers {
|
||||
if _, ok := constants.Hosts[offer.GetHostname()]; !ok {
|
||||
log.Printf("New host found. Adding host [%s]", offer.GetHostname())
|
||||
constants.Hosts[offer.GetHostname()] = struct{}{}
|
||||
}
|
||||
offerUtils.AddHostIfNew(offer)
|
||||
if _, ok := s.totalPower[*offer.Hostname]; !ok {
|
||||
_, _, offerWatts := offerUtils.OfferAgg(offer)
|
||||
s.totalPower[*offer.Hostname] = offerWatts
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package schedulers
|
||||
|
||||
import (
|
||||
"bitbucket.org/sunybingcloud/electron/constants"
|
||||
"bitbucket.org/sunybingcloud/electron/def"
|
||||
"bitbucket.org/sunybingcloud/electron/utilities/mesosUtils"
|
||||
"bitbucket.org/sunybingcloud/electron/utilities/offerUtils"
|
||||
|
@ -121,10 +120,7 @@ func (s *BinPackSortedWatts) ResourceOffers(driver sched.SchedulerDriver, offers
|
|||
log.Printf("Received %d resource offers", len(offers))
|
||||
|
||||
for _, offer := range offers {
|
||||
if _, ok := constants.Hosts[offer.GetHostname()]; !ok {
|
||||
log.Printf("New host found. Adding host [%s]", offer.GetHostname())
|
||||
constants.Hosts[offer.GetHostname()] = struct{}{}
|
||||
}
|
||||
offerUtils.AddHostIfNew(offer)
|
||||
select {
|
||||
case <-s.Shutdown:
|
||||
log.Println("Done scheduling tasks: declining offer on [", offer.GetHostname(), "]")
|
||||
|
|
|
@ -282,10 +282,7 @@ func (s *BottomHeavy) ResourceOffers(driver sched.SchedulerDriver, offers []*mes
|
|||
offersLightPowerClasses := []*mesos.Offer{}
|
||||
|
||||
for _, offer := range offers {
|
||||
if _, ok := constants.Hosts[offer.GetHostname()]; !ok {
|
||||
log.Printf("New host found. Adding host [%s]", offer.GetHostname())
|
||||
constants.Hosts[offer.GetHostname()] = struct{}{}
|
||||
}
|
||||
offerUtils.AddHostIfNew(offer)
|
||||
select {
|
||||
case <-s.Shutdown:
|
||||
log.Println("Done scheduling tasks: declining offer on [", offer.GetHostname(), "]")
|
||||
|
@ -296,13 +293,19 @@ func (s *BottomHeavy) ResourceOffers(driver sched.SchedulerDriver, offers []*mes
|
|||
default:
|
||||
}
|
||||
|
||||
if constants.PowerClasses["A"][*offer.Hostname] ||
|
||||
constants.PowerClasses["B"][*offer.Hostname] {
|
||||
if _, ok := constants.PowerClasses["A"][*offer.Hostname]; ok{
|
||||
offersHeavyPowerClasses = append(offersHeavyPowerClasses, offer)
|
||||
} else if constants.PowerClasses["C"][*offer.Hostname] ||
|
||||
constants.PowerClasses["D"][*offer.Hostname] {
|
||||
offersLightPowerClasses = append(offersLightPowerClasses, offer)
|
||||
}
|
||||
if _, ok := constants.PowerClasses["B"][*offer.Hostname]; ok{
|
||||
offersHeavyPowerClasses = append(offersHeavyPowerClasses, offer)
|
||||
}
|
||||
if _, ok := constants.PowerClasses["C"][*offer.Hostname]; ok{
|
||||
offersHeavyPowerClasses = append(offersLightPowerClasses, offer)
|
||||
}
|
||||
if _, ok := constants.PowerClasses["D"][*offer.Hostname]; ok{
|
||||
offersHeavyPowerClasses = append(offersLightPowerClasses, offer)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
log.Println("Packing Large tasks into ClassAB offers:")
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package schedulers
|
||||
|
||||
import (
|
||||
"bitbucket.org/sunybingcloud/electron/constants"
|
||||
"bitbucket.org/sunybingcloud/electron/def"
|
||||
"bitbucket.org/sunybingcloud/electron/utilities/mesosUtils"
|
||||
"bitbucket.org/sunybingcloud/electron/utilities/offerUtils"
|
||||
|
@ -165,10 +164,7 @@ func (s *BPSWMaxMinWatts) ResourceOffers(driver sched.SchedulerDriver, offers []
|
|||
log.Printf("Received %d resource offers", len(offers))
|
||||
|
||||
for _, offer := range offers {
|
||||
if _, ok := constants.Hosts[offer.GetHostname()]; !ok {
|
||||
log.Printf("New host found. Adding host [%s]", offer.GetHostname())
|
||||
constants.Hosts[offer.GetHostname()] = struct{}{}
|
||||
}
|
||||
offerUtils.AddHostIfNew(offer)
|
||||
select {
|
||||
case <-s.Shutdown:
|
||||
log.Println("Done scheduling tasks: declining offer on [", offer.GetHostname(), "]")
|
||||
|
|
|
@ -261,10 +261,7 @@ func (s *BPSWMaxMinPistonCapping) ResourceOffers(driver sched.SchedulerDriver, o
|
|||
log.Printf("Received %d resource offers", len(offers))
|
||||
|
||||
for _, offer := range offers {
|
||||
if _, ok := constants.Hosts[offer.GetHostname()]; !ok {
|
||||
log.Printf("New host found. Adding host [%s]", offer.GetHostname())
|
||||
constants.Hosts[offer.GetHostname()] = struct{}{}
|
||||
}
|
||||
offerUtils.AddHostIfNew(offer)
|
||||
select {
|
||||
case <-s.Shutdown:
|
||||
log.Println("Done scheduling tasks: declining offer on [", offer.GetHostname(), "]")
|
||||
|
|
|
@ -300,10 +300,7 @@ func (s *BPSWMaxMinProacCC) ResourceOffers(driver sched.SchedulerDriver, offers
|
|||
|
||||
// retrieving the available power for all the hosts in the offers.
|
||||
for _, offer := range offers {
|
||||
if _, ok := constants.Hosts[offer.GetHostname()]; !ok {
|
||||
log.Printf("New host found. Adding host [%s]", offer.GetHostname())
|
||||
constants.Hosts[offer.GetHostname()] = struct{}{}
|
||||
}
|
||||
offerUtils.AddHostIfNew(offer)
|
||||
_, _, offerWatts := offerUtils.OfferAgg(offer)
|
||||
s.availablePower[*offer.Hostname] = offerWatts
|
||||
// setting total power if the first time
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package schedulers
|
||||
|
||||
import (
|
||||
"bitbucket.org/sunybingcloud/electron/constants"
|
||||
"bitbucket.org/sunybingcloud/electron/def"
|
||||
"bitbucket.org/sunybingcloud/electron/utilities/mesosUtils"
|
||||
"bitbucket.org/sunybingcloud/electron/utilities/offerUtils"
|
||||
|
@ -120,10 +119,7 @@ func (s *FirstFit) ResourceOffers(driver sched.SchedulerDriver, offers []*mesos.
|
|||
log.Printf("Received %d resource offers", len(offers))
|
||||
|
||||
for _, offer := range offers {
|
||||
if _, ok := constants.Hosts[offer.GetHostname()]; !ok {
|
||||
log.Printf("New host found. Adding host [%s]", offer.GetHostname())
|
||||
constants.Hosts[offer.GetHostname()] = struct{}{}
|
||||
}
|
||||
offerUtils.AddHostIfNew(offer)
|
||||
select {
|
||||
case <-s.Shutdown:
|
||||
log.Println("Done scheduling tasks: declining offer on [", offer.GetHostname(), "]")
|
||||
|
|
|
@ -233,10 +233,7 @@ func (s *FirstFitProacCC) ResourceOffers(driver sched.SchedulerDriver, offers []
|
|||
|
||||
// retrieving the available power for all the hosts in the offers.
|
||||
for _, offer := range offers {
|
||||
if _, ok := constants.Hosts[offer.GetHostname()]; !ok {
|
||||
log.Printf("New host found. Adding host [%s]", offer.GetHostname())
|
||||
constants.Hosts[offer.GetHostname()] = struct{}{}
|
||||
}
|
||||
offerUtils.AddHostIfNew(offer)
|
||||
_, _, offer_watts := offerUtils.OfferAgg(offer)
|
||||
s.availablePower[*offer.Hostname] = offer_watts
|
||||
// setting total power if the first time.
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package schedulers
|
||||
|
||||
import (
|
||||
"bitbucket.org/sunybingcloud/electron/constants"
|
||||
"bitbucket.org/sunybingcloud/electron/def"
|
||||
"bitbucket.org/sunybingcloud/electron/utilities/mesosUtils"
|
||||
"bitbucket.org/sunybingcloud/electron/utilities/offerUtils"
|
||||
|
@ -127,10 +126,7 @@ func (s *FirstFitSortedOffers) ResourceOffers(driver sched.SchedulerDriver, offe
|
|||
log.Println("Sorted Offers:")
|
||||
for i := 0; i < len(offers); i++ {
|
||||
offer := offers[i]
|
||||
if _, ok := constants.Hosts[offer.GetHostname()]; !ok {
|
||||
log.Printf("New host found. Adding host [%s]", offer.GetHostname())
|
||||
constants.Hosts[offer.GetHostname()] = struct{}{}
|
||||
}
|
||||
offerUtils.AddHostIfNew(offer)
|
||||
offerCPU, _, _ := offerUtils.OfferAgg(offer)
|
||||
log.Printf("Offer[%s].CPU = %f\n", offer.GetHostname(), offerCPU)
|
||||
}
|
||||
|
|
|
@ -246,10 +246,7 @@ func (s *FirstFitSortedWattsProacCC) ResourceOffers(driver sched.SchedulerDriver
|
|||
|
||||
// retrieving the available power for all the hosts in the offers.
|
||||
for _, offer := range offers {
|
||||
if _, ok := constants.Hosts[offer.GetHostname()]; !ok {
|
||||
log.Printf("New host found. Adding host [%s]", offer.GetHostname())
|
||||
constants.Hosts[offer.GetHostname()] = struct{}{}
|
||||
}
|
||||
offerUtils.AddHostIfNew(offer)
|
||||
_, _, offer_watts := offerUtils.OfferAgg(offer)
|
||||
s.availablePower[*offer.Hostname] = offer_watts
|
||||
// setting total power if the first time.
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package schedulers
|
||||
|
||||
import (
|
||||
"bitbucket.org/sunybingcloud/electron/constants"
|
||||
"bitbucket.org/sunybingcloud/electron/def"
|
||||
"bitbucket.org/sunybingcloud/electron/utilities/mesosUtils"
|
||||
"bitbucket.org/sunybingcloud/electron/utilities/offerUtils"
|
||||
|
@ -129,10 +128,7 @@ func (s *FirstFitSortedWattsSortedOffers) ResourceOffers(driver sched.SchedulerD
|
|||
log.Println("Sorted Offers:")
|
||||
for i := 0; i < len(offers); i++ {
|
||||
offer := offers[i]
|
||||
if _, ok := constants.Hosts[offer.GetHostname()]; !ok {
|
||||
log.Printf("New host found. Adding host [%s]", offer.GetHostname())
|
||||
constants.Hosts[offer.GetHostname()] = struct{}{}
|
||||
}
|
||||
offerUtils.AddHostIfNew(offer)
|
||||
offerCPU, _, _ := offerUtils.OfferAgg(offer)
|
||||
log.Printf("Offer[%s].CPU = %f\n", offer.GetHostname(), offerCPU)
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package schedulers
|
||||
|
||||
import (
|
||||
"bitbucket.org/sunybingcloud/electron/constants"
|
||||
"bitbucket.org/sunybingcloud/electron/def"
|
||||
"bitbucket.org/sunybingcloud/electron/utilities/mesosUtils"
|
||||
"bitbucket.org/sunybingcloud/electron/utilities/offerUtils"
|
||||
|
@ -123,10 +122,7 @@ func (s *FirstFitSortedWatts) ResourceOffers(driver sched.SchedulerDriver, offer
|
|||
log.Printf("Received %d resource offers", len(offers))
|
||||
|
||||
for _, offer := range offers {
|
||||
if _, ok := constants.Hosts[offer.GetHostname()]; !ok {
|
||||
log.Printf("New host found. Adding host [%s]", offer.GetHostname())
|
||||
constants.Hosts[offer.GetHostname()] = struct{}{}
|
||||
}
|
||||
offerUtils.AddHostIfNew(offer)
|
||||
select {
|
||||
case <-s.Shutdown:
|
||||
log.Println("Done scheduling tasks: declining offer on [", offer.GetHostname(), "]")
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package schedulers
|
||||
|
||||
import (
|
||||
"bitbucket.org/sunybingcloud/electron/constants"
|
||||
"bitbucket.org/sunybingcloud/electron/def"
|
||||
"bitbucket.org/sunybingcloud/electron/utilities/mesosUtils"
|
||||
"bitbucket.org/sunybingcloud/electron/utilities/offerUtils"
|
||||
|
@ -113,10 +112,7 @@ func (s *FirstFitWattsOnly) ResourceOffers(driver sched.SchedulerDriver, offers
|
|||
log.Printf("Received %d resource offers", len(offers))
|
||||
|
||||
for _, offer := range offers {
|
||||
if _, ok := constants.Hosts[offer.GetHostname()]; !ok {
|
||||
log.Printf("New host found. Adding host [%s]", offer.GetHostname())
|
||||
constants.Hosts[offer.GetHostname()] = struct{}{}
|
||||
}
|
||||
offerUtils.AddHostIfNew(offer)
|
||||
select {
|
||||
case <-s.Shutdown:
|
||||
log.Println("Done scheduling tasks: declining offer on [", offer.GetHostname(), "]")
|
||||
|
|
|
@ -18,7 +18,7 @@ func coLocated(tasks map[string]bool) {
|
|||
// Get the powerClass of the given hostname
|
||||
func hostToPowerClass(hostName string) string {
|
||||
for powerClass, hosts := range constants.PowerClasses {
|
||||
if ok := hosts[hostName]; ok {
|
||||
if _, ok := hosts[hostName]; ok {
|
||||
return powerClass
|
||||
}
|
||||
}
|
||||
|
|
|
@ -281,6 +281,7 @@ func (s *TopHeavy) ResourceOffers(driver sched.SchedulerDriver, offers []*mesos.
|
|||
offersLightPowerClasses := []*mesos.Offer{}
|
||||
|
||||
for _, offer := range offers {
|
||||
offerUtils.AddHostIfNew(offer)
|
||||
select {
|
||||
case <-s.Shutdown:
|
||||
log.Println("Done scheduling tasks: declining offer on [", offer.GetHostname(), "]")
|
||||
|
@ -291,12 +292,17 @@ func (s *TopHeavy) ResourceOffers(driver sched.SchedulerDriver, offers []*mesos.
|
|||
default:
|
||||
}
|
||||
|
||||
if constants.PowerClasses["A"][*offer.Hostname] ||
|
||||
constants.PowerClasses["B"][*offer.Hostname] {
|
||||
if _, ok := constants.PowerClasses["A"][*offer.Hostname]; ok{
|
||||
offersHeavyPowerClasses = append(offersHeavyPowerClasses, offer)
|
||||
} else if constants.PowerClasses["C"][*offer.Hostname] ||
|
||||
constants.PowerClasses["D"][*offer.Hostname] {
|
||||
offersLightPowerClasses = append(offersLightPowerClasses, offer)
|
||||
}
|
||||
if _, ok := constants.PowerClasses["B"][*offer.Hostname]; ok{
|
||||
offersHeavyPowerClasses = append(offersHeavyPowerClasses, offer)
|
||||
}
|
||||
if _, ok := constants.PowerClasses["C"][*offer.Hostname]; ok{
|
||||
offersHeavyPowerClasses = append(offersLightPowerClasses, offer)
|
||||
}
|
||||
if _, ok := constants.PowerClasses["D"][*offer.Hostname]; ok{
|
||||
offersHeavyPowerClasses = append(offersLightPowerClasses, offer)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue