+ private updateWaitTimeTasksUsage (
+ workerTasksUsage: TasksUsage,
+ message: MessageValue<Response>
+ ): void {
+ if (this.workerChoiceStrategyContext.getTaskStatistics().waitTime) {
+ workerTasksUsage.waitTime += message.taskPerformance?.waitTime ?? 0
+ if (
+ this.workerChoiceStrategyContext.getTaskStatistics().avgWaitTime &&
+ workerTasksUsage.ran !== 0
+ ) {
+ workerTasksUsage.avgWaitTime =
+ workerTasksUsage.waitTime / workerTasksUsage.ran
+ }
+ if (
+ this.workerChoiceStrategyContext.getTaskStatistics().medWaitTime &&
+ message.taskPerformance?.waitTime != null
+ ) {
+ workerTasksUsage.waitTimeHistory.push(message.taskPerformance.waitTime)
+ workerTasksUsage.medWaitTime = median(workerTasksUsage.waitTimeHistory)
+ }
+ }
+ }
+
+ private updateEluTasksUsage (
+ workerTasksUsage: TasksUsage,
+ message: MessageValue<Response>
+ ): void {
+ if (this.workerChoiceStrategyContext.getTaskStatistics().elu) {
+ if (
+ workerTasksUsage.elu != null &&
+ message.taskPerformance?.elu != null
+ ) {
+ workerTasksUsage.elu = {
+ idle: workerTasksUsage.elu.idle + message.taskPerformance.elu.idle,
+ active:
+ workerTasksUsage.elu.active + message.taskPerformance.elu.active,
+ utilization:
+ (workerTasksUsage.elu.utilization +
+ message.taskPerformance.elu.utilization) /
+ 2
+ }
+ } else if (message.taskPerformance?.elu != null) {
+ workerTasksUsage.elu = message.taskPerformance.elu
+ }
+ }
+ }
+