- const workerVirtualTaskTRunTime = this.requiredStatistics.medRunTime
- ? this.pool.workerNodes[workerNodeKey].tasksUsage.medRunTime
- : this.pool.workerNodes[workerNodeKey].tasksUsage.avgRunTime
- this.workersVirtualTaskTimestamp[workerNodeKey] = {
- start: workerVirtualTaskStartTimestamp,
- end: workerVirtualTaskStartTimestamp + workerVirtualTaskTRunTime
- }
+ }
+
+ private getWorkerNodeVirtualTaskEndTimestamp (
+ workerNodeKey: number,
+ workerNodeVirtualTaskStartTimestamp: number
+ ): number {
+ const workerNodeTaskRunTime =
+ this.opts.measurement === Measurements.elu
+ ? this.getWorkerNodeTaskElu(workerNodeKey)
+ : this.getWorkerNodeTaskRunTime(workerNodeKey)
+ return workerNodeVirtualTaskStartTimestamp + workerNodeTaskRunTime
+ }
+
+ private getWorkerNodeVirtualTaskStartTimestamp (
+ workerNodeKey: number
+ ): number {
+ const virtualTaskEndTimestamp =
+ this.pool.workerNodes[workerNodeKey]?.strategyData
+ ?.virtualTaskEndTimestamp
+ const now = performance.now()
+ return now < (virtualTaskEndTimestamp ?? -Infinity)
+ ? (virtualTaskEndTimestamp as number)
+ : now