in src/statequery/utilization.go [23:49]
func (state *State) ComputeUtilization(threshold float64) {
for id, reservation := range state.Reservations {
// Total number of running jobs per reservation
reservation.NumJobs = len(reservation.Jobs)
// Total slot usage across all jobs per reservation
for _, job := range reservation.Jobs {
reservation.TotalUsage += job.Usage
}
// Utilization factor
utilization := reservation.TotalUsage / reservation.Slots
// Set breach flag if utilization crosses threshold
if utilization >= threshold {
reservation.ThresholdBreached = true
}
// Round slot usage up to natural ceiling
reservation.TotalUsageCeiling = int(math.Ceil(reservation.TotalUsage))
// Format printable utilization percentage
reservation.Percentage = fmt.Sprintf("%.2f", utilization*100.0)
state.Reservations[id] = reservation
}
}