From f43379f36547af1700a5fe1c84f42a872c40f035 Mon Sep 17 00:00:00 2001 From: Christoph Kluge Date: Tue, 18 Feb 2025 18:10:39 +0100 Subject: [PATCH] fix: add missing factor for job power calculation, see #340 --- internal/repository/job.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/internal/repository/job.go b/internal/repository/job.go index 70d79d3..020c3c2 100644 --- a/internal/repository/job.go +++ b/internal/repository/job.go @@ -600,8 +600,11 @@ func (r *JobRepository) UpdateEnergy( // FIXME: Needs sum as stats type } else if sc.MetricConfig[i].Energy == "power" { // this metric has power as unit (Watt) // Energy: Power (in Watts) * Time (in Seconds) - // Unit: ( W * s ) / 3600 / 1000 = kWh ; Rounded to 2 nearest digits - energy = math.Round(((LoadJobStat(jobMeta, fp, "avg")*float64(jobMeta.Duration))/3600/1000)*100) / 100 + // Unit: (( W * s ) / 3600) / 1000 = kWh ; Rounded to 2 nearest digits: (Energy * 100) / 100 + // Here: All-Node Metric Average * Number of Nodes * Job Runtime + // Note: Shared Jobs handled correctly since "Node Average" is based on partial resources, while "numNodes" factor is 1 + metricNodeSum := LoadJobStat(jobMeta, fp, "avg") * float64(jobMeta.NumNodes) * float64(jobMeta.Duration) + energy = math.Round(((metricNodeSum/3600)/1000)*100) / 100 } } else { log.Warnf("Error while collecting energy metric %s for job, DB ID '%v', return '0.0'", fp, jobMeta.ID)