func()

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
	}
}