]> Piment Noir Git Repositories - poolifier.git/commitdiff
fix: fix worker usage statistics computation
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Sun, 6 Jul 2025 20:13:37 +0000 (22:13 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Sun, 6 Jul 2025 20:13:37 +0000 (22:13 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
src/pools/utils.ts
src/pools/worker.ts

index 3b9ecaddda0832d31238be3e8d8100cd272c44e7..025402749e3715756fd9e8327609bbddb2ffc1e6 100644 (file)
@@ -272,14 +272,14 @@ const updateMeasurementStatistics = (
           measurementStatistics.history.toArray()
         )
       } else if (measurementStatistics.average != null) {
-        delete measurementStatistics.average
+        measurementStatistics.average = undefined
       }
       if (measurementRequirements.median) {
         measurementStatistics.median = median(
           measurementStatistics.history.toArray()
         )
       } else if (measurementStatistics.median != null) {
-        delete measurementStatistics.median
+        measurementStatistics.median = undefined
       }
     }
   }
@@ -377,14 +377,11 @@ export const updateEluWorkerUsage = <
   )
   if (eluTaskStatisticsRequirements?.aggregate === true) {
     if (message.taskPerformance?.elu != null) {
-      if (workerUsage.elu.utilization != null) {
-        workerUsage.elu.utilization =
-          (workerUsage.elu.utilization +
-            message.taskPerformance.elu.utilization) /
-          2
-      } else {
-        workerUsage.elu.utilization = message.taskPerformance.elu.utilization
-      }
+      workerUsage.elu.count = (workerUsage.elu.count ?? 0) + 1
+      workerUsage.elu.utilization =
+        ((workerUsage.elu.utilization ?? 0) * (workerUsage.elu.count - 1) +
+          message.taskPerformance.elu.utilization) /
+        workerUsage.elu.count
     }
   }
 }
index edc659d37169e3833d99da62314bc0b3e5430baa..63c508d08cfa5fa976ea2b75985a15b2d11a6170 100644 (file)
@@ -59,6 +59,7 @@ export const MeasurementHistorySize = 386
  */
 export interface EventLoopUtilizationMeasurementStatistics {
   readonly active: MeasurementStatistics
+  count?: number
   readonly idle: MeasurementStatistics
   utilization?: number
 }