Added explanation for StarvationThreshold. Removed TotalPower as it was embedded inside the schedulers.
This commit is contained in:
parent
50d1d79051
commit
512918e1e8
1 changed files with 20 additions and 23 deletions
|
@ -26,7 +26,11 @@ func AddNewHost(newHost string) bool {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lower bound of the percentage of requested power, that can be allocated to a task.
|
/*
|
||||||
|
Lower bound of the percentage of requested power, that can be allocated to a task.
|
||||||
|
|
||||||
|
Note: This constant is not used for the proactive cluster wide capping schemes.
|
||||||
|
*/
|
||||||
var PowerThreshold = 0.6 // Right now saying that a task will never be given lesser than 60% of the power it requested.
|
var PowerThreshold = 0.6 // Right now saying that a task will never be given lesser than 60% of the power it requested.
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -47,29 +51,22 @@ func UpdateCapMargin(newCapMargin float64) bool {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Threshold factor that would make (Cap_margin * task.Watts) equal to (60/100 * task.Watts).
|
/*
|
||||||
var StarvationFactor = 0.8
|
The factor, that when multiplied with (task.Watts * CapMargin) results in (task.Watts * PowerThreshold).
|
||||||
|
This is used to check whether available power, for a host in an offer, is not less than (PowerThreshold * task.Watts),
|
||||||
|
which is assumed to result in starvation of the task.
|
||||||
|
Here is an example,
|
||||||
|
Suppose a task requires 100W of power. Assuming CapMargin = 0.75 and PowerThreshold = 0.6.
|
||||||
|
So, the assumed allocated watts is 75W.
|
||||||
|
Now, when we get an offer, we need to check whether the available power, for the host in that offer, is
|
||||||
|
not less than 60% (the PowerTreshold) of the requested power (100W).
|
||||||
|
To put it in other words,
|
||||||
|
availablePower >= 100W * 0.75 * X
|
||||||
|
where X is the StarvationFactor (80% in this case)
|
||||||
|
|
||||||
// Total power per node.
|
Note: This constant is not used for the proactive cluster wide capping schemes.
|
||||||
var TotalPower map[string]float64
|
*/
|
||||||
|
var StarvationFactor = PowerThreshold / CapMargin
|
||||||
// Initialize the total power per node. This should be done before accepting any set of tasks for scheduling.
|
|
||||||
func AddTotalPowerForHost(host string, totalPower float64) bool {
|
|
||||||
// Validation
|
|
||||||
isCorrectHost := false
|
|
||||||
for _, existingHost := range Hosts {
|
|
||||||
if host == existingHost {
|
|
||||||
isCorrectHost = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if !isCorrectHost {
|
|
||||||
return false
|
|
||||||
} else {
|
|
||||||
TotalPower[host] = totalPower
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Window size for running average
|
// Window size for running average
|
||||||
var WindowSize = 160
|
var WindowSize = 160
|
||||||
|
|
Reference in a new issue