feat: add tasks wait time account per worker
[poolifier.git] / src / pools / selection-strategies / fair-share-worker-choice-strategy.ts
index 3a2e71eea4fcbc3af3c0f35162639747cda171a7..56d9dc361fe6e70255877ec6c1e6be6f33b70a70 100644 (file)
@@ -27,7 +27,10 @@ export class FairShareWorkerChoiceStrategy<
   public readonly requiredStatistics: RequiredStatistics = {
     runTime: true,
     avgRunTime: true,
-    medRunTime: false
+    medRunTime: false,
+    waitTime: false,
+    avgWaitTime: false,
+    medWaitTime: false
   }
 
   /**
@@ -41,7 +44,7 @@ export class FairShareWorkerChoiceStrategy<
     opts: WorkerChoiceStrategyOptions = DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS
   ) {
     super(pool, opts)
-    this.checkOptions(this.opts)
+    this.setRequiredStatistics(this.opts)
   }
 
   /** @inheritDoc */
@@ -97,10 +100,9 @@ export class FairShareWorkerChoiceStrategy<
     workerNodeKey: number,
     workerVirtualTaskStartTimestamp: number
   ): number {
-    const workerVirtualTaskRunTime = this.requiredStatistics.medRunTime
-      ? this.pool.workerNodes[workerNodeKey].tasksUsage.medRunTime
-      : this.pool.workerNodes[workerNodeKey].tasksUsage.avgRunTime
-    return workerVirtualTaskStartTimestamp + workerVirtualTaskRunTime
+    return (
+      workerVirtualTaskStartTimestamp + this.getWorkerTaskRunTime(workerNodeKey)
+    )
   }
 
   private getWorkerVirtualTaskStartTimestamp (workerNodeKey: number): number {